点击鼠标即可更改JPanel数据

时间:2012-12-25 11:02:30

标签: java swing jbutton

我在挥杆应用程序中使用了三个JButton。当我点击每个按钮时,相应的数据(JTable格式为JScrollPane)将显示在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);
      }.......

2 个答案:

答案 0 :(得分:1)

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

我最好的猜测(由于问题中的信息有限,这是一个猜测)是你的按钮没有实际工作,只是显示错误的信息。

您发布的代码只包含add,但没有重新验证布局。请参考Container#add方法的javadoc。调整大小时,布局会重新生效,您会看到JPanel中实际包含的内容。

可能的解决方案:

  • 在您的invalidate
  • 中调用面板上的repaintActionListener
  • 使用CardLayout在不同的组件之间切换

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

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

答案 1 :(得分:0)

我无法清楚地表达问题。请为您带来不便。

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

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