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

将一个JFrame中的现有JPanel与另一个JPanel换出的正确方法是什么?

江德润
2023-03-14
问题内容

我正在构建一个程序,该程序需要将当前可见的JPanel与另一个交换。不幸的是,似乎有很多事情要做,而我所有的尝试都以失败告终。我可以成功地使第一个JPanel出现在我的JFrame中,但是交换JPanels会导致空白的JFrame。

我的主要JFrame:

public class ShellFrame {

static CardLayout cl = new CardLayout(); //handles panel switching
static JFrame frame; //init swing on EDT
static MainMenu mm; 
static Panel2 p2;
static Panel3 p3;

public static void main(String[] args) {
    initFrame();
}

public static void initFrame() {
    SwingUtilities.invokeLater(new Runnable() {
         public void run() {
              frame = new JFrame();
              frame.setDefaultCloseOperation(3);
              frame.setLayout(cl);

              mm = new MainMenu();
              pp = new PlacementPanel();

              //first panel added to frame will always show first
              frame.add(mm, "MainMenu");
              frame.pack(); //sizes frame to fit the panel being shown
              frame.setVisible(true);
         }
    });
}

public static void switchPanel(String name) {
    cl.show(frame.getContentPane(), name);
    frame.pack();
}

public static void updatePanel2(/* args */) {
   frame.removeAll();
   p2 = new Panel2(/* args */);
   frame.add(pp, "PlacementPanel");
   frame.pack();
   frame.validate();
   frame.repaint();  
}

我正在尝试使用updatePanel2将现有面板替换为新的Panel2,但是它似乎无法正常工作。Panel2本身可以很好地工作,但是尝试将其与我的程序结合使用只会产生一个空白窗口。任何帮助将不胜感激!


问题答案:

that requires swapping out the current, visible JPanel with another

请查看CardLayout,以获取有关如何正确执行操作的完整示例。



 类似资料:
  • 我想在我的基本框架中添加一个带有JPanel的JScrollpane 如果我将带有的直接添加到中,就可以了。但是现在,当我将帧的大小减小到500像素以下时,变得更小,如第二张图片所示。 如何使JScrollPane工作?

  • 一个jFrame:HomeView、一个jPanel:TopicListView、另一个jPanel:ReplyListView。 在HomeView中,我有一个菜单项,可以单击它来显示TopicListView。在TopicListView中,我希望有一个可以单击以显示ReplyListView的按钮。单击按钮时,它将调用openReplyListView()方法。该方法将创建一个新的JPane

  • 我必须插入一个JFrame,另一个类的一个JPanel。我在JFrame中有一个jMenuItem,我希望这样,当我单击jMenuItem,就会出现JPanel。

  • 我为欢迎屏幕设计了一个接口,其中有一个JFrame,包括两个JPanel(JPanel1在右边,JPanel2在左边)。左边的按钮用于切换JPanel1中的面板。我想按下一个按钮,用另一个JPanel替换JPanel1内容,但我不知道怎么做。请帮忙。

  • 我想在一个JFrame中用另一个Jpanel替换一个Jpanel,我已经搜索并尝试了我的代码,但什么也没有发生,这是我的代码: 有人能帮帮我吗?多谢

  • 问题内容: 我有一个外部面板,在外部面板上有另一个jPanel。 如果我在内部面板上单击鼠标右键,则应该执行外部面板的右键单击操作。如果我确实在内部面板上单击鼠标左键,则应该发生其自身内部面板的点击动作。 是否可以将点击事件从一个面板传递到另一面板? 问题答案: 要解决此问题,您需要解决许多问题。 首先是要了解鼠标事件与创建它的组件有关,尤其是位置信息。单击点是相对于源组件x / y位置的偏移量(