Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 单击鼠标即可更改JPanel数据_Java_Swing_Jbutton - Fatal编程技术网

Java 单击鼠标即可更改JPanel数据

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

我在swing应用程序中使用了三个
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的意外行为

您需要提供更多的代码。请提供足够的信息,以便我们能够重现该问题的工作示例。此处发布的代码不涉及描述的问题,以便更好地帮助我们尽快发布一个简短、可运行、可编译的,