毎度、お世話になります。 javaのenumの使用方法についてお教えください。 『Test_Draw.java』ファイルで、下記の如く、msrを設定しています。 modeMSR msr=modeMSR.FRQ; そして、この設定に基づきまして、『ShapeTest1.java』ファイルのほうで、下記の如く switch(msr)を行なっていますが、msrに所定の値が設定されていないようです。 Q1)この件に関しまして、コメント頂けますと大変有難いです。 上記のそれぞれのファイルに関しましては、下記をご覧ください。 //『Test_Draw.java』====================== import java.awt.BasicStroke; import java.awt.Color; import java.awt.Graphics2D; import java.awt.geom.Line2D; enum modeMSR {IDL,FRQ,PLR,BUZ} enum modeDRAW {ZAHYO, CURVE} public class Test_Draw { modeMSR msr=modeMSR.FRQ; Test_Draw(){ //msr=modeMSR.FRQ; } static void subDrawA(Graphics2D g2){ //g2.draw(new Line2D.Double(30.0d, 50.0d, 180.0d, 140.0d)); //============================================== g2.setPaint(Color.PINK); BasicStroke wideStroke = new BasicStroke(4.0f); g2.setStroke(wideStroke); g2.draw(new Line2D.Double(30.0d, 120.0d, 250.0d, 70.0d)); System.out.println("subDrawA"); } static void subDrawB(Graphics2D g2){ //swX=0; g2.setPaint(Color.RED); BasicStroke wideStroke = new BasicStroke(4.0f); g2.setStroke(wideStroke); g2.draw(new Line2D.Double(30.0d, 120.0d, 250.0d, 140.0d)); System.out.println("subDrawB"); } } //『ShapeTest1.java』====================== import java.awt.BorderLayout; import java.awt.Canvas; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class ShapeTest1{ myCanvasPanel myCanvas; myCtlPanel myCtl; Test_Draw myDraw; int sw_sup=1; public static void main(String[] args){ ShapeTest1 frame=new ShapeTest1(); } ShapeTest1(){ JFrame frame=new JFrame(); frame.setTitle("タイトル"); frame.setBounds(10, 10, 300,220); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //North================================SOUTHにmyCtlPanelを配置 JPanel p1=new JPanel(); myCtlPanel myCtl=new myCtlPanel(p1, 300, 50) ; frame.getContentPane().add(p1,BorderLayout.SOUTH); //=====================================CENTERにmyCanvasPanelを配置 JPanel p2=new JPanel(); myCanvas=new myCanvasPanel(p2,300,150); frame.getContentPane().add(p2,BorderLayout.CENTER); frame.setVisible(true); } //=========================== public class myCtlPanel extends JFrame{ myCtlPanel(JPanel p, int width, int height){ //領域のサイズ設定 setSize(width,height); //領域のサイズ取得 Dimension dimension = getSize(); JButton button1=new JButton("button1"); button1.addActionListener(new TimButton1()); p.add(button1); } } public class TimButton1 implements ActionListener{ @Override public void actionPerformed(ActionEvent ae){ sw_sup=1; myCanvas.repaint();//ng System.out.println("actionPerformed"); } } class myCanvasPanel extends Canvas{ myCanvasPanel(JPanel p, int width, int height){ //領域のサイズ設定 setSize(width,height); //領域のサイズ取得 Dimension dimension = getSize(); //p2.add(myCanvas);の代わり、--->p.add(this) //つまり、thisはyCanvas(myCanvasPanel()のリターン)の代わりとなる。 p.add(this); } /* //======================================= public void update(Graphics g){ paint(g); } */ public void paint(Graphics g){//repaint()では、起動 Graphics2D g2 = (Graphics2D)g; //if(sw_sup==1) return; modeMSR msr=myDraw.msr; switch(msr){ //Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException //modeMSR msr=modeMSR.IDL; //switch(msr){ case IDL: //==================================================== g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); //==================================================== myDraw.subDrawA(g2); break; case FRQ: myDraw.subDrawB(g2); break; default: break; } } }//class myCanvasPanel extends Canvas{ }
↧