我在挥杆应用程序中使用了三个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);
}.......
答案 0 :(得分:1)
调整JPanel
的大小不会突然替换组件或将其他组件添加到面板中。
我最好的猜测(由于问题中的信息有限,这是一个猜测)是你的按钮没有实际工作,只是显示错误的信息。
您发布的代码只包含add
,但没有重新验证布局。请参考Container#add
方法的javadoc。调整大小时,布局会重新生效,您会看到JPanel
中实际包含的内容。
可能的解决方案:
invalidate
repaint
和ActionListener
CardLayout
在不同的组件之间切换我个人更喜欢CardLayout
选项,但这可能取决于情况。
请注意,在您发布的代码中,您为这两个按钮添加了table1
。可能是复制粘贴问题,也可能是您实际代码的问题。
答案 1 :(得分:0)
我无法清楚地表达问题。请为您带来不便。
JPanel.removeAll()方法解决了我的问题。
我在向JPanel添加任何新组件之前添加了此方法。这修复了JPanel的意外行为。