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窗格,我有很多问题:
我使用null布局
答案 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)
问题,请检查您在容器上使用的布局。
同样,我认为这里的主要问题是您没有正确处理您的问题,或者您没有使用所需的工具。