【问题标题】:My JButton action listener is not working我的 JButton 动作监听器不工作
【发布时间】:2014-07-05 15:31:41
【问题描述】:

我的ActionListener 代码让JButton 转到另一个JPanel,但它不能正常工作,虽然它以前可以工作。我的代码如下:

JButton btnNext = new JButton("Next");
btnNext.addActionListener(new ActionListener() {
   public void actionPerformed(ActionEvent e) {
      JPanel contentPane = new ListofDuties2(myFrame);
      myFrame.getContentPane().removeAll();
      myFrame.setContentPane(contentPane);
      myFrame.setVisible(true);
   }
});
btnNext.setBounds(194, 381, 89, 23);
add(btnNext);

我不太确定它有什么问题。

【问题讨论】:

标签: java swing action listener jbutton


【解决方案1】:

从可见的 GUI 添加/删除组件时,基本代码是:

panel.remove(...);
panel.add();
panel.revalidate(); // to invoke the layout manager
panel.repaint();

问题是你为什么要使用 removeAll()?每当我看到这样的代码时,这意味着您可能应该使用Card Layout,然后只是交换面板。

【讨论】:

    【解决方案2】:
    btnNext.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    JPanel contentPane = new ListofDuties2(myFrame);
                    myFrame.getContentPane().removeAll();
                    myFrame.setContentPane(contentPane);
                    myFrame.getContentPane().revalidate();
                    myFrame.setVisible(true);
                }} );  
    

    你最后忘记了);

    也可以拨打revalidate()

    【讨论】:

    • removeAll 不会自动失效吗?并且用户需要重新验证?
    • @BlackBox 哦,是的!确实如此!我的错!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多