Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

自作ボタンの動作について(押下時のダイアログ表示)

 以前、自作のボタンについて質問させて頂いたものです。
おかげさまで期待通りに自作のボタンを作成することができました。
ありがとうございました。
 ただ、1点どうにもできないことがあり、再度質問させて頂きます。

<やりたいこと>
・自作のボタンをクリックすることで、ダイアログを開きたい

<現在の状況>
・自作のボタンをクリックすると、中途半端にダイアログが開き、そのまま固まってしまう
 (ダイアログの枠だけ表示された状態になる)
・自作のボタンをJButtonに置き換えると正常にダイアログが開く

以下に現在のコードを記します。
原因がわかる方がいらっしゃれば、ご教授いただけないでしょうか。

++++++++++++++++++
public class Plan{
            ・
            ・
            ・
    private MyDialog2 dialog_event = new MyDialog2(frame,"ダイアログ",true,this);
            ・
            ・
            ・
    private JPanel setMainPanel1(Calendar cal) throws Exception{
            ・
            ・
            ・
        MyButton3 btn_date = new MyButton3();
        btn_date.addActionListener(new ButtonAction_btn_date(int_temp_ymd,obj_gyomu));
            ・
            ・
            ・
    }
    
    class ButtonAction_btn_date implements ActionListener{
        private int int_date;
        private GyomuTable obj_gyomu;
        public ButtonAction_btn_date(int int_date,GyomuTable obj_gyomu){
            this.int_date = int_date;
            this.obj_gyomu = obj_gyomu;
        }
        public void actionPerformed(ActionEvent e) {
            try{
                dialog_event.showDialog(int_date,obj_gyomu);
                dialog_event.setVisible(true);
            }catch(Exception ex){
                lbl_err.setText(ex.toString());
            }            
        }
    }

}
++++++++++++++++++
public class MyButton3 extends JButton{            
    private ImageIcon btn_image;
    public MyButton3(){
        btn_image = new ImageIcon(getClass().getResource("MyButton3.png"));
        setOpaque(false);
    }
    public void paintComponent(Graphics g) {
        int w = btn_image.getIconWidth();
        int h = btn_image.getIconHeight();
        g.drawImage(btn_image.getImage(), 0, 0, 80, 12, null);
        
        this.getUI().paint(g, this);
    }
}
++++++++++++++++++
public class MyDialog2 extends JDialog {
    public void showDialog(int int_date,GyomuTable obj_gyomu)throws Exception{
                ・
                ・
                ・
        mainPanel0.removeAll();
        mainPanel0.add(getTable());
                ・
                ・
                ・
    }
}

5

回答

79506

閲覧

5件の回答

評価

0

デバックでステップ実行してみて、
どこで動作がとまっているか調べてみてはどうですか?

評価

0

 ご回答ありがとうございます。
デバッグでステップをおってはみたのですが、最後までいってしまうのです。
なのに、実行(eclipseの再生ボタン)を押すと、ダイアログを表示するところで
止まってしまうのです。
このような場合、どのように調べればよいのでしょう・・・

評価

0

何のために書いているのかもよくわからないけど

this.getUI().paint(g, this);
↑これって使い方あってるの?

評価

0

それ、ボタンテキストを描画する簡易的な方法として私が紹介したの。

ダイアログを表示するところで止まってしまうということは、おそらくイベントディスパッチスレッドで例外が発生しているんだと思います。NullPointerException とか疑ってみてください。

評価

0

        mainPanel0.removeAll();
        mainPanel0.add(getTable());

憶測だけど、ここで表示がとまってる気がする。・w・

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。