JTabbedPane无法正常工作

时间:2013-04-06 19:02:44

标签: java swing layout jtabbedpane

    public void tabbedPane(){
        JPanel tab1 = new JPanel();
            JButton btn = new JButton("Buton - 1");
            btn.setPreferredSize(new Dimension(50, 20));
            btn.setLocation(0, 10);
        tab1.add(btn);
        JTabbedPane tabPanel = new JTabbedPane();
        tabPanel.addTab("tab1", null, tab1);
        tabPanel.addTab("tab2", tab1);
        tabPanel.addTab("tab3", btn);
        tabPanel.setPreferredSize(new Dimension(450, 150));
        tabPanel.setLocation(50, 0);
        mainPanel.add(tabPanel);//Main panel on frame
    }

当我运行我的应用程序时,我只看到tab2和tab3窗格,我有很多问题:

  • tabPanel.setLocation不起作用
  • tabPanel.addTab(“tab1”...)不起作用
  • btn.setPreferredSize(new Dimension(50,20));当我 单击“tab2”它可以正常工作,但是当我单击“tab3”时它不会更改按钮 大小..为什么?

我使用null布局

2 个答案:

答案 0 :(得分:2)

  

tabPanel.setLocation不起作用

不要使用setLocation(...),而是使用嵌套组件和布局管理器来实现令人满意且易于维护的GUI布局。

  

tabPanel.addTab(“tab1”...)不起作用

使用Swing,您只能将一个组件添加到一个容器中,就是这样。该组件将仅显示在添加到的最后一个容器中。

  

btn.setPreferredSize(new Dimension(50, 20));当我点击“tab2”时它可以正常工作,但是当我点击“tab3”时它不会改变按钮大小..为什么?

同样,您将要学习布局管理器

  

我使用null布局

您几乎从不想要这样做,因为这会使您的应用程序在任何平台上看起来都不正确,但是您自己的应用程序将非常难以维护和升级。使用布局管理器要好得多,让他们为您完成布局和调整组件的繁重工作。

答案 1 :(得分:1)

你的目标是什么?

JTabbedPane用于组织视图,我看到你正在尝试添加JPanel作为第一个标签,这是JTabbedPanes的“主要目标”。

tabPanel.addTab("Tab 1", tab1);

尝试添加像这样的标签,你传递一个'null'值作为图标,它根本不会影响,但是如果你没有使用图标,那么只需将面板添加为一个标签,预期的名称。

在第二次添加时,您将再次添加相同的组件(tab1)。

在第三次添加时,您尝试在容器上添加一个组件(tab1)。这将使此组件仅出现在您添加到的最后一个容器中。此外,组件是JButton。我看不到JButton作为标签的目标。

对于setLocation(x, y)问题,请检查您在容器上使用的布局。

同样,我认为这里的主要问题是您没有正确处理您的问题,或者您没有使用所需的工具。