JDialog 弹出一个模式JDialog ,弹出的JDialog 有一个按钮,按钮的jbutton事件不响应是怎么回事?如何解决?public class DataFrame extends JFrame { public static void main(String[] args) {
// TODO Auto-generated method stub
DataFrame dataFrame = new DataFrame();
dataFrame.dataSource();
} public void dataSource() {
JDialog datasourceDialog = new JDialog();
datasourceDialog.setSize(500, 400);
datasourceDialog.setLocation(datasourceDialog.getToolkit()
.getScreenSize().width
/ 2 - datasourceDialog.getWidth() / 2, datasourceDialog
.getToolkit().getScreenSize().height
/ 2 - datasourceDialog.getHeight() / 2); JButton  addButton = new JButton("添加");

datasourceDialog.add(addButton);
datasourceDialog.setVisible(true);

addButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
ConfigDataSource configDataSource=new ConfigDataSource();
}
});
}
}
public class ConfigDataSource {
private JButton jButton;

public ConfigDataSource() {
DataFrame dataFrame=new DataFrame();
JDialog datasourceDialog = new JDialog(dataFrame,"111",true);
datasourceDialog.setSize(400, 500);
jButton=new JButton("1111");
datasourceDialog.add(jButton);
datasourceDialog.setVisible(true);

jButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//ConfigDataSource configDataSource=new ConfigDataSource();
JOptionPane.showOptionDialog(null, "作者","关于", JOptionPane.DEFAULT_OPTION , JOptionPane.INFORMATION_MESSAGE, null, null, null);
}
});
}
public JButton getJButton() {
return jButton;
}
public void setJButton(JButton button) {
jButton = button;
}
}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【javastudyq】截止到2008-07-30 09:21:38的历史汇总数据(不包括此帖):
    发帖的总数量:7                        发帖的总分数:470                      每贴平均分数:67                       
    回帖的总数量:6                        得分贴总数量:1                        回帖的得分率:16%                      
    结贴的总数量:6                        结贴的总分数:370                      
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:1                        未结的总分数:100                      
    结贴的百分比:85.71 %               结分的百分比:78.72 %                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    楼主加油

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=javastudyq
      

  2.   

    import java.awt.BorderLayout;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JDialog;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;class DataFrame extends JFrame {    public static void main(String[] args) {
            // TODO Auto-generated method stub
            DataFrame dataFrame = new DataFrame();
            dataFrame.dataSource();
        }    public void dataSource() {
            JDialog datasourceDialog = new JDialog();
            datasourceDialog.setSize(500, 400);
            datasourceDialog.setLocation(datasourceDialog.getToolkit().getScreenSize().width / 2 - datasourceDialog.getWidth() / 2, datasourceDialog.getToolkit().getScreenSize().height / 2 - datasourceDialog.getHeight() / 2);        JButton addButton = new JButton("添加");        datasourceDialog.add(addButton);
            datasourceDialog.setVisible(true);        addButton.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {
                    ConfigDataSource configDataSource = new ConfigDataSource();
                }
            });
        }
    }class ConfigDataSource {    private JButton jButton;    public ConfigDataSource() {
            DataFrame dataFrame = new DataFrame();
            JDialog datasourceDialog = new JDialog(dataFrame, "111", true);
            datasourceDialog.setSize(400, 500);
            jButton = new JButton("1111");
            jButton.setBounds(100, 100, 300, 300);
            jButton.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {
                    JOptionPane.showOptionDialog(null, "作者", "关于", JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE, null, null, null);
                }
            });
            datasourceDialog.add(jButton, BorderLayout.NORTH);
            datasourceDialog.setVisible(true);
        }    public JButton getJButton() {
            return jButton;
        }    public void setJButton(JButton button) {
            jButton = button;
        }
    }很奇怪,我把addActionListener提前了一下就正常,放在后面就无法正常响应事件
      

  3.   

    同楼上,感觉挺怪的啊。
    放在一起虽然能解决,但是如果弹出的JDialog还要弹出的话
      

  4.   

    我这边是这样做的在ui里给按钮添加监听
    在view里写actionPerformed(ActionEvent e)
      

  5.   

    呵呵
    因为模态的话会有两个事情做
    1.super.dispose();
    2.通知所有TreeLock要weak.调用dialog.show()或dialog.setVisible(true)方法,会获取TreeLock,所以如果在此之间加入到dialog,那么它认为是dialog的,不计入TreeLock中。
      

  6.   

    解决方法是4 楼 ZangXT的方式,原因见10楼