- ベストアンサー
Radioボタンの割込み処理について
- Radioボタンの割込み処理について、要約すると、コード中の『se[0].addChangeListener(this)』にて、Radioボタンをクリックすると割込みが発生し、正常に動作します。しかし、他のプログラムでthisと記述するとエラーが発生します。割込み処理を他のワードに変更する方法を教えてください。
- Radioボタンの割込み処理について、コード中の『se[0].addChangeListener(this)』にてRadioボタンをクリックすると割込みが発生し、正常に動作します。しかし、他のプログラムでthisと記述するとエラーが発生します。このエラーを回避するために、割込み処理の対象を他のワードに変更する方法を教えてください。
- Radioボタンの割込み処理について、コード中の『se[0].addChangeListener(this)』によってRadioボタンをクリックすると割込みが発生し、正常に動作します。しかし、他のプログラムではthisと記述するとエラーが発生します。エラーを回避するためには、割込み処理の対象を別のワードに変更する必要があります。具体的な変更方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
r_btn[i].addChangeListener(myDrawClass); にしたら動きませんか?
その他の回答 (2)
- maiko0318
- ベストアンサー率21% (1483/6969)
>引数として記述しましたが、eclipse4.4で、記述した(キーイン)段階でエラーとなります。 プログラムが複数にわたっているためかと思います。 このままコンパイルしたらどうなりますか?
補足
maiko0318 さま 度々お世話になります。 >このままコンパイルしたらどうなりますか? 同じ箇所でコンパイルエラーになり、赤色のxマークが付きます。 myMsrCtlPane()を呼出していますのは、下記のMainFrameからです、 myMsrCtlPanelを実行している段階では、そのクラスはまだ出来上がっていないのでは 無いかと思います。 クラスが出来上がっていなくても、Buttonの割込み処理は出来ますが、 RadioButtonの割込は、クラスが確定しえないので、コンパイルエラーとなるのではないかと思っています。 もし、今回添付しました MainFrameのコードに不具合があれば、ご指摘ください。 以上、宜しくお願いします。 ====================================== //MainFrame public class MainFrame extends JFrame{ static myCanvas myCanvasX; static myTablePanel myTable; static myMsrChkPanel myMsrChk; static myMsrCndPanel myMsrCnd; static myMsrCtlPanel myMsrCtl; static myDrawClass myDraw; //Test用 static MainFrame frame; //コンストラクター MainFrame(){ //================================================ //コンテントペイン作成 //========================================= int myMsrCnd_xsize=myDraw.MSRCND_SIZE_X; //180; int myMsrCnd_ysize=myDraw.MSRCND_SIZE_Y; //180; int myTable_xsize=myDraw.TABLE_SIZE_X; //180; int myTable_ysize=myDraw.TABLE_SIZE_Y; //180; int myCanvas_xsize=myDraw.CANVAS_SIZE_X; //652; //512+140; int myCanvas_ysize=myDraw.CANVAS_SIZE_Y; //600; int myMsrChk_xsize=myDraw.MSRCHK_SIZE_X; //total_xsize; //180; int myMsrChk_ysize=myDraw.MSRCHK_SIZE_Y; //180; int myMsrCtl_xsize=myDraw.MSRCTL_SIZE_X; //total_xsize; int myMsrCtl_ysize=myDraw.MSRCTL_SIZE_Y; int total_xsize=myDraw.TOTAL_SIZE_X; //myMsrCnd_xsize+myTable_xsize+myCanvas_xsize; int total_ysize=myDraw.TOTAL_SIZE_Y; //myMsrChk_ysize+myCanvas_ysize+myMsrCtl_ysize+100; //フレーム作成 JFrame frame = new JFrame(); frame.setTitle("MainFrame"); // frame.setBounds(350,0,total_xsize,myCanvas_ysize+100); //desktop 位置、total_xsize,myCanvas_ysize+100 frame.setBounds(350,0,total_xsize,total_ysize); //desktop 位置、total_xsize,myCanvas_ysize+100 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setResizable(true); //false:サイズ変更の禁止 // frame.setVisible(true); //WEST ==================================================== JPanel p3 = new JPanel(); myMsrCndPanel myMsrCnd=new myMsrCndPanel(p3, myMsrCnd_xsize, myMsrCnd_ysize); //widthx, widthy frame.getContentPane().add(p3,BorderLayout.WEST); //CENTER ====================================================== JPanel p4 = new JPanel(); myTable=new myTablePanel(p4, myTable_xsize, myTable_ysize); frame.getContentPane().add(p4,BorderLayout.CENTER); //EAST ======================================================= //GraphCanvas作成 <----GraphCanvasのコンストラクターをcallし、インスタンスを作成する JPanel p1 = new JPanel(); myCanvasX= new myCanvas(myCanvas_xsize,myCanvas_ysize); // myThread.myclsThreadX(myCanvas); // p.setLayout(null); //引数:LayoutManager? // p.setAlignmentX(0.0f); //あっても無くても良い, no effect // p.setAlignmentY(40.0f); //あっても無くても良い, no effect // p1.setBounds(0,0,400,300); //この命令は機能せず p1.add(myCanvasX); frame.getContentPane().add(p1,BorderLayout.EAST); //NORTH ======================================================== //p2は、myCanvasの生成の後に、そのインスタンスを使用する。 JPanel p2 = new JPanel(); myMsrChkPanel myMsrChk=new myMsrChkPanel(p2, myMsrChk_xsize, myMsrChk_ysize); frame.getContentPane().add(p2,BorderLayout.NORTH); //SOUTH ==================================================== JPanel p5 = new JPanel(); myMsrCtl=new myMsrCtlPanel(p5, myMsrCtl_xsize, myMsrCtl_ysize); frame.getContentPane().add(p5,BorderLayout.SOUTH); //cls_PLR=================================================== myclsPLR clsPLR=new myclsPLR(); //フレーム可視化 frame.setVisible(true); //再描画が行われる } static myCanvas getmyCanvas(){ return myCanvasX; } static myMsrCtlPanel getmyMsrCtl(){ return myMsrCtl; } //main()メソッド //===================================== public static void main(String[] args){ //================================ frame=new MainFrame(); // myMsrCtl.setRadioButtonInterrupt(myMsrCtl); //myMsrCtlの中のメソッド:引数はクラス名 }
- maiko0318
- ベストアンサー率21% (1483/6969)
ここはクラス名を指定します。 thisはこのクラスという意味です。 >他のプログラムで、thisと記述した瞬間に、エラーcheckに引っかかります。 そっちのプログラムを示してください。
補足
>そっちのプログラムを示してください。 <--最初の部分です。 ご教授の程、宜しくお願いします。 最後の部分の『r_btn[i].addChangeListener(this);』のthisでエラーとなります。 ======================= import java.awt.Color; import java.awt.Dimension; import java.awt.GridLayout; import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.ButtonGroup; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.border.LineBorder; import javax.swing.event.ChangeEvent; //======================= //import javax.swing.JRadioButton; //import javax.swing.event.ChangeEvent; class myMsrCtlPanel extends myDrawClass{ Dimension dimension; int ptrRD=0; int ptrWR=0; myDrawClass myDraw; //Test用 int nxx=10; int nyy=10; double delX=10.0; double delY=10.0; JRadioButton[] r_btn=new JRadioButton[8]; JCheckBox[] ckbox=new JCheckBox[4]; myMsrCtlPanel(JPanel p, int delx, int dely){ //領域のサイズ設定 setSize(delx,dely); //領域のサイズ取得 dimension = getSize(); // p.setLayout(new GridLayout(3, 16)); //================================== GridLayout layout = new GridLayout(3, 16); layout.setHgap(2); layout.setVgap(2); p.setLayout(layout); //================================ LineBorder border = new LineBorder(Color.BLACK, 1, true); JButton button1=new JButton("btn1"); modify_button(button1, border); JButton button2=new JButton("btn2"); modify_button(button2, border); //=================================== JButton button3=new JButton("Sgl_srt"); modify_button(button3, border); //==================================== r_btn=new JRadioButton[8]; r_btn[0]=new JRadioButton("Idl"); r_btn[0].setBorderPainted(true); //button4 r_btn[1]=new JRadioButton("Frq"); r_btn[1].setBorderPainted(true); //button5 r_btn[2]=new JRadioButton("Plr"); r_btn[2].setBorderPainted(true); //button6 r_btn[3]=new JRadioButton("Buz"); r_btn[3].setBorderPainted(true); //button7 r_btn[4]=new JRadioButton("Pls"); r_btn[4].setBorderPainted(true); //button8 r_btn[5]=new JRadioButton("THSF"); r_btn[5].setBorderPainted(true); //button9 r_btn[6]=new JRadioButton("THSQ"); r_btn[6].setBorderPainted(true); //button10 r_btn[7]=new JRadioButton("All"); r_btn[7].setBorderPainted(true); //button11 //======================== for(int i=0; i<=7; i++){ r_btn[i].addChangeListener(this); } // r_btn[0].addChangeListener(this); //========================= ButtonGroup group = new ButtonGroup(); group.add(r_btn[0]); //Idl group.add(r_btn[1]); //Frq 以下、省略 以上
お礼
maiko0318 さま 毎度、お世話になります。 その後、コードを見直しまして、『 implements ChangeListener 』が、ぬけていましたので、 追加しまして、旨く行きました。 度々のコメント有難うございました。 class myMsrCtlPanel extends myDrawClass implements ChangeListener { 以上
補足
maiko0318 さま 毎度、お世話になります。 下記の如く、クラス名として、myDrawClassとそれを継承しましたmyMsrCtlPanelを 引数として記述しましたが、eclipse4.4で、記述した(キーイン)段階でエラーとなります。 何か次のコメントを頂けますと、大変有難いです。 for(int i=0; i<=7; i++){ // r_btn[i].addChangeListener(myDrawClass); r_btn[i].addChangeListener(myMsrCtlPanel); } 以上