1
    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(新维度(50, 20)); 当我单击“tab2”时它可以正常工作,但是当我单击“tab3”时它不会改变按钮大小..为什么?

我使用空布局

4

2 回答 2

2

tabPanel.setLocation 不起作用

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

tabPanel.addTab("tab1" ...) 不起作用

使用 Swing,您只能将一个组件添加到一个容器中,仅此而已。该组件只会显示在它添加到的最后一个容器中。

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

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

我使用空布局

您几乎不想这样做,因为这会使您的应用程序在除您自己的平台之外的任何平台上看起来都不正确,并且会使维护和升级变得非常非常困难。最好使用布局管理器并让他们为您完成布局和调整组件大小的繁重工作。

于 2013-04-06T19:15:57.057 回答
1

你这样做的目的是什么?

AJTabbedPane用于组织视图,我看到您正在尝试将 JPanel 添加为第一个选项卡,这是 JTabbedPanes 的“主要目标”。

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

尝试像这样添加选项卡,您将“null”值作为图标传递,这根本不会影响,但如果您不使用图标,则只需将面板添加为具有预期名称的选项卡.

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

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

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

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

于 2013-04-06T19:24:15.323 回答