Java 单击鼠标即可更改JPanel数据
我在swing应用程序中使用了三个Java 单击鼠标即可更改JPanel数据,java,swing,jbutton,Java,Swing,Jbutton,我在swing应用程序中使用了三个JButtons。当我单击每个按钮时,相应的数据(用JScrollPane在JTable中格式化)将显示在JPanel上 问题:当我调整JFrame的大小时,JPanel将替换为默认按钮(首先单击的按钮)信息,而不是当前的JButton信息 我的示例代码: jbutton1.addActionListener(this); jbutton2.addActionListener(this); public void actioP
JButton
s。当我单击每个按钮时,相应的数据(用JScrollPane
在JTable
中格式化)将显示在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);
}.......
调整
JPanel
的大小不会突然更换组件或将其他组件添加到面板中
我最好的猜测是(由于问题中的信息有限,这是一个猜测)你的按钮没有一个真正起作用,只是显示了错误的信息
您发布的代码只包含一个add
,没有对布局进行任何重新验证。请参阅容器#add
方法的javadoc。调整大小时,布局将重新验证,您将看到JPanel
中实际包含的内容
可能的解决办法:
- 在面板上以及在
ActionListener中调用
和invalidate
repaint
- 使用
在不同组件之间切换CardLayout
CardLayout
选项,但这可能取决于具体情况
请注意,在您发布的代码中,您为两个按钮都添加了
table1
。可能是复制粘贴问题,或者您的实际代码有问题。我无法清楚地表达这个问题。对于给您带来的不便,我深表歉意
JPanel.removeAll()方法已修复我的问题
在向JPanel添加任何新组件之前,我添加了这个方法。这修复了JPanel的意外行为 您需要提供更多的代码。请提供足够的信息,以便我们能够重现该问题的工作示例。此处发布的代码不涉及描述的问题,以便更好地帮助我们尽快发布一个简短、可运行、可编译的,