首页 > 解决方案 > eclipse ide java没有加载jpanels

问题描述

所以我的问题很奇怪。所以我试图在eclipse ide中编写一个java程序。我添加了一个 JFrame 和多个 JPanel。您可以通过将一个面板设置为不可见而将另一个面板设置为可见的按钮来浏览 JPanel,您明白了。但是,过了一段时间,这种情况开始发生:当我按下一个按钮时,正确的 JPanel 被设置为可见,我可以看到它,但它完全是空的。有时它的内容显示正确,但这是相当不一致的。

正如我所说:有时会发生,有时不会发生。我会启动程序并关闭它 5 次,第 6 次它终于可以工作了。我不认为代码是必需的(因为它都是正确的,因为毕竟它有时确实有效),但如果你想看到它随时问。我的 Eclipse 工作区位于 SSD 上的 C 驱动器上,并且不是太满。它还剩下 250 场演出中的 100 场。提前感谢您的时间和帮助!

编辑:所以继承人的代码示例。我试图在两个 JPanel 之间切换:“主”面板

Var.menuPanel = new JPanel();
        Var.jf1.add(Var.menuPanel);
        Var.menuPanel.setBounds(0, 0, Var.screenwidth, Var.screenheight);
        Var.menuPanel.setLayout(null);
        Var.menuPanel.setVisible(true);
        Var.menuPanel.revalidate();
        Var.menuPanel.repaint();

这一切都很好。切换到其他面板的按钮:

Var.editCourse = new JButton("Edit");
        Var.menuPanel.add(Var.editCourse);
        Var.editCourse.setBounds(550, 120, 200, 50);
        Var.editCourse.setVisible(true);
        Var.editCourse.addActionListener(handler);
        Var.editCourse.setBackground(Color.YELLOW);

其他 JPanel + UI 元素

Var.editCoursePanel = new JPanel();
        Var.jf1.add(Var.editCoursePanel);
        Var.editCoursePanel.setBounds(0, 0, Var.screenwidth, Var.screenheight);
        Var.editCoursePanel.setLayout(null);
        Var.editCoursePanel.setVisible(false);
        Var.editCoursePanel.revalidate();
        Var.editCoursePanel.repaint();
        
        Var.editCourseToMenu = new JButton("Back");
        Var.editCoursePanel.add(Var.editCourseToMenu);
        Var.editCourseToMenu.setVisible(true);
        Var.editCourseToMenu.setBounds(550, 400, 200, 50);
        Var.editCourseToMenu.addActionListener(handler);
        
        Var.editCourseSelection = new JComboBox<String>(JSONHandler.courses);
        Var.editCoursePanel.add(Var.editCourseSelection);
        Var.editCourseSelection.setBounds(550, 200, 200, 50);
        Var.editCourseSelection.setVisible(true);
        Methods.setArrowBounds(Var.editCourseSelection);
        Var.editCourseSelection.setSelectedItem("Edit.");
        
        Var.submitCourse = new JButton("Continue");
        Var.editCoursePanel.add(Var.submitCourse);
        Var.submitCourse.setBounds(550, 300, 200, 50);
        Var.submitCourse.setVisible(true);
        Var.submitCourse.addActionListener(handler);

AcionHandler 中的行:

else if(e.getSource() == Var.editCourse) {
        MenuHandler.showEditCoursePanel();
}

showEditCoursePanel 方法:

public static void showEditCoursePanel() {
        
        Var.menuPanel.setVisible(false);
        Var.editCoursePanel.setVisible(true);
        
}

哦,而且,有时当它不加载时,旁边有一个 JScrollPane 的滚动条,正如你所看到的,它甚至从未被提及。

编辑2:好的,我找到了问题的根源。当我将原始 JPanel 添加到 JFrame 并使用它时一切正常,我当然不能滚动。但是当我添加 JScrollPane 时,newCoursePanel 根本不会出现。除了带有滚动条的面板之外,其他所有内容现在都可以流畅地工作。这是我正在谈论的 nwCoursePanel 的代码:

Var.newCoursePanel = new JPanel();
        Var.newCoursePanel.setBounds(0, 0, Var.screenwidth, Var.screenheight);
        Var.newCoursePanel.setLayout(null);
        Var.newCoursePanel.revalidate();
        Var.newCoursePanel.repaint();
        Var.newCoursePane = new JScrollPane(Var.newCoursePanel);
        Var.newCoursePane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
        Var.newCoursePane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
        Var.newCoursePane.setVisible(false);
        Var.jf1.add(Var.newCoursePane);

我不知道如何让它工作。在显示面板我只是Var.menuPanel.setVisible(false)Var.newCoursePane.setVisible(true)

标签: javaeclipseswingjpaneljscrollpane

解决方案


推荐阅读