当前位置: 首页 > 面试题库 >

单击按钮后更改框架的内容窗格

匡旭东
2023-03-14
问题内容

我希望能够在单击该框架的JPanels之一中的按钮之后设置JFrame的contentpane。

我的体系结构由一个控制器创建,该控制器创建JFrame和其中的第一个JPanel。在第一个JPanel中,我正在调用一个方法:控制器上的setcontentpane(JPanel
jpanel)。但是,除了加载传递的JPanel之外,它什么也不做,而是删除所有面板(请参见下面的代码)

第一个JPanel内部的ActionListener:

public void actionPerformed(ActionEvent arg0) {
            controller.setpanel(new CustomPanel(string1, string2));
        }

控制器:

JFrame frame;

public void setpanel(JPanel panel)
{
    frame.getContentPane().removeAll();
    frame.getContentPane().add(panel);
    frame.repaint();
}

public Controller(JFrame frame)
{
    this.frame=frame;
}

谁能告诉我我在做什么错?谢谢 :)


问题答案:

调用revalidate,然后重新绘制。这告诉布局管理器对其组件进行布局:

JPanel contentPane = (JPanel) frame.getContentPane();

contentPane.removeAll();
contentPane.add(panel);
contentPane.revalidate(); 
contentPane.repaint();

更好的方法是,如果您只想交换JPanels,则使用CardLayout并让它完成肮脏的工作。



 类似资料:
  • 如果你点击按钮,你会看到一个蓝色的边框,这对我来说真的很烦。对于如何让它消失/根本不出现,你有什么解决方案吗?

  • 这是网络检查 我想使用关键字Execute Javascript点击这个元素。我试着这样 运行测试后,它通过了,但在web上没有任何操作。还是一样。你能帮忙吗? 我已经找到了解决方案。根据有几个iframe,所以在执行上面的命令之前应该选择预期的iframe

  • 问题内容: 我需要提取表中每列的详细信息。例如,列“名称/编号”。 该表包含多个地址 每行的最后一列都有一个按钮,使用户可以选择列出的地址。 问题: 我的代码仅选择具有类的第一个。我该如何工作? 这是jQuery位: 表: 问题答案: 练习的目的是找到包含信息的行。当我们到达那里时,我们可以轻松提取所需的信息。 回答 现在,让我们集中讨论这种情况下的一些常见问题。 如何找到最接近的行? 使用: 使

  • 问题内容: 说我有一个选项菜单,其中包含要连接的网络列表。 现在,当用户按下刷新按钮时,我想更新用户可以连接的网络列表。 我无法使用,因为我浏览了所有内容,但没有看到看起来像我所做选择的条目。 我不认为这可以使用tk变量来更改,因为没有这样的事情。 问题答案: 我修改了脚本以演示如何执行此操作: 单击“刷新”按钮后,将清除network_select中的选项,并插入new_choices中的选项。

  • 当我单击一个按钮时,有没有一种方法可以更改TreeView的TreeItem的文本?我尝试执行oracle示例http://docs.oracle.com/javafx/2/uicontrols/tree-view.htm中所示的操作,但我不想通过单击TreeItem更改它,而是单击按钮。第二步,我想使用上下文菜单打开一个带有Textfield的窗口,在这里我可以手动插入文本以更改treeitem

  • 问题内容: 以下是HTML。 以下是Javscript 还有一些CSS 我要的是单击适当的按钮后,将Board组件的大小调整为适当的大小。 我已经尝试过这样 但这是行不通的。 问题答案: 您不能像这样设置React组件的状态。并且组件应负责设置自己的状态。 在您的Board组件内部,在componentDidMount中设置事件侦听器。最好的解决方案是让按钮成为React应用程序的一部分,但这超出