-2

JButton在我的摇摆应用程序中使用了三个 s。当我点击每个按钮时,相应的数据(格式JTableJScrollPane)将显示在JPanel.

问题:当我调整大小时JFrame,将JPanel替换为默认按钮(我首先单击的按钮)信息而不是当前JButton信息。

我的示例代码:

      jbutton1.addActionListener(this);
      jbutton2.addActionListener(this); 

    public void actioPerformed(ActionEvent e){
    if(e.getActionCommand.equals("button1"))
    JPanel.add(table1);
     }
    if(e.getActionCommand.equals("button2"))
     JPanel.add(table1);
      }.......
4

2 回答 2

1

调整大小JPanel不会突然替换组件或将其他组件添加到面板。

我最好的猜测(由于问题中的信息有限,这是一个猜测)是你的按钮都没有真正起作用,只是显示了错误的信息。

您发布的代码仅包含一个add没有任何重新验证布局的代码。Container#add请参阅该方法的 javadoc 。调整大小时,布局会重新验证,您会看到JPanel.

可能的解决方案:

  • 呼叫invalidaterepaint在您的面板上以及在您的ActionListener
  • 使用 aCardLayout在不同组件之间切换

我个人更喜欢这个CardLayout选项,但这可能取决于具体情况。

请注意,在您发布的代码中,您添加table1了两个按钮。可能是复制粘贴问题,或者您的实际代码有问题。

于 2012-12-25T17:15:02.180 回答
0

我无法清楚地表达问题。很抱歉给您带来不便。

JPanel.removeAll()方法解决了我的问题。

我在将任何新组件添加到 JPanel 之前添加了此方法。这修复了 JPanel 的意外行为。

于 2012-12-26T16:31:02.377 回答