【问题标题】:JTabbedPane not working with JPanelsJTabbedPane 不能与 JPanels 一起使用
【发布时间】:2013-09-29 22:16:56
【问题描述】:

对于 Java GUI 家庭作业额外的功劳,我正在尝试将几个面板添加到 JTabbedPane。实际上,它们是 JFrame,但我只是更改为扩展 JPanel 而不是 JFrame,并删除了 main()。无论如何,当我运行 main() 时,JTabbedPane 和两个面板都出现了,但是是分开的。我错过了什么?

   import javax.swing.*;

public class TabbedPane extends JFrame
{

    JPanel DayGui = new JPanel();
    JPanel OfficeAreaCalculator = new JPanel();
    JLabel firstLabel = new JLabel("First tabbed pane");
    JLabel secondLabel = new JLabel("Second tabbed pane");
    JTabbedPane tabbedPane = new JTabbedPane();

    // constructor
    public TabbedPane()
    {
        DayGui.add(firstLabel);
        OfficeAreaCalculator.add(secondLabel);

        tabbedPane.add("First Panel", DayGui);
        tabbedPane.add("Second Panel", OfficeAreaCalculator);
        add(tabbedPane);

    }

    public static void main(String[] args)
    {
        TabbedPane tab = new TabbedPane();
        tab.pack();
        tab.setVisible(true);
        JTabbedPane DayGui = new JTabbedPane();
        JTabbedPane OfficeAreaCalculator = new JTabbedPane();
        DayGui dg = new DayGui();
        OfficeAreaCalculator oac = new OfficeAreaCalculator();
    }
}

【问题讨论】:

    标签: java swing jpanel jtabbedpane


    【解决方案1】:

    您正在创建 2 对变量用于引用组件以添加到 JFrame,但添加指向空白 JPanels 的变量。基于official tutorial研究这段代码

    public class TabbedPaneApp {
    
        private static void createAndShowGUI() {
    
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
            JTabbedPane firstPanel = new JTabbedPane();
            JTabbedPane secondPanel = new JTabbedPane();
    
            JLabel firstLabel = new JLabel("First tabbed pane");
            JLabel secondLabel = new JLabel("Second tabbed pane");
    
            JTabbedPane tabbedPane = new JTabbedPane() {
                public Dimension getPreferredSize() {
                    return new Dimension(500, 400);
                };
            };
    
            firstPanel.add(firstLabel);
            secondPanel.add(secondLabel);
    
            tabbedPane.add("First Panel", firstPanel);
            tabbedPane.add("Second Panel", secondPanel);
            frame.add(tabbedPane);
    
            frame.pack();
            frame.setVisible(true);
        }
    
        public static void main(String[] args) {
            javax.swing.SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    createAndShowGUI();
                }
            });
        }
    }
    

    【讨论】:

    • 感谢您的回复。我以为我听懂了你说的,但我没有。我将 TabbedPane 类中的 JPanel 更改为 JPanel DayGui = new JPanel(); JPanel OfficeAreaCalculator = new JPanel(); 我还更改了 TabbedPane() 构造函数中的引用,并将主方法条目设置为:` JTabbedPane DayGui = new JTabbedPane();` JTabbedPane OfficeAreaCalculator = new @987654328 @ @DayGui dg = new DayGui(); OfficeAreaCalculator oac = new OfficeAreaCalculator(); 我仍然得到相同的结果,3 个窗口:一个带有 2 个选项卡的 JTabbedPane 窗口和两个面板
    • 您的代码有很多问题。研究上面的例子并遵循 Java 命名约定 :)
    猜你喜欢
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 2017-01-09
    • 2017-04-14
    • 2016-09-16
    • 2016-04-19
    • 1970-01-01
    • 2011-01-19
    相关资源
    最近更新 更多