【问题标题】:Adding a JButton when another JButton is pressed按下另一个 JButton 时添加一个 JButton
【发布时间】:2013-04-30 16:37:47
【问题描述】:

我有一个 JButton,我想在按下它时创建一个新的 JButton 我添加了一个看起来像这样的 ActionListener,但它没有添加另一个 JButton。

public void actionPerformed(ActionEvent e){
        Object command = e.getSource();
        if(command.equals(play)){
            ImageIcon i1 = new ImageIcon("NewGame.png");
            width = i1.getIconWidth();
            height = i1.getIconWidth();
            newGame = new JButton(i1);
            newGame.setBorderPainted(false);
            newGame.setContentAreaFilled(false);
            newGame.setSize(width, height);
            newGame.setLocation(600,100);
            add(newGame);
            System.out.println("It Works");
        } 
    } 

我将如何做到这一点,以便当我按下已经存在的 JButton 时,会添加这个?

【问题讨论】:

  • 当你说它不起作用时,你得到什么错误?
  • @rahulmaindargi 它只是没有添加 JButton
  • 你是怎么把监听器放在第一个按钮上的?
  • 您正在将其添加到具有操作侦听器的容器中。您应该保留对要添加它的容器的引用并将其添加到那里。取决于布局管理器等。你明白这每次都会发生吗?
  • 如果您提供更多相关代码会有所帮助,这样我们就不必猜测了。调用 invalidate 也可能有帮助。

标签: java swing button jbutton actionlistener


【解决方案1】:

添加按钮后一定要revalidaterepaint

revalidate();
repaint();

setSizesetLocation 的使用看来,您使用的是绝对定位或null 布局。使用布局管理器。

【讨论】:

    【解决方案2】:

    添加后必须调用repaint()

    【讨论】:

      【解决方案3】:

      如果您没有遇到异常,那么您将需要刷新或重新绘制旧按钮的容器。

      【讨论】:

        猜你喜欢
        • 2014-01-12
        • 1970-01-01
        • 1970-01-01
        • 2013-10-06
        • 2013-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多