我使用netbeans,我创建了一个带有netbeans的JFrame
表单,它创建了我编辑过的以下类:
public class Gui extends javax.swing.JFrame {
public Gui() {
initComponents();
this.setVisible(false);
this.setLocationRelativeTo(null); // finestra al centro dello schermo
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 804, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 536, Short.MAX_VALUE)
);
pack();
}// </editor-fold>
}
之后我创建了一个JPanel
课程,我想将其添加到之前的Gui
JFrame
:
public class Gui_JTabbedPane extends JPanel {
public Gui_JTabbedPane() {
super(new GridLayout(1, 1));
JTabbedPane tabbedPane = new JTabbedPane();
JComponent panel1 = makeTextPanel("Try");
tabbedPane.addTab("Try", panel1, "Does nothing");
tabbedPane.setMnemonicAt(0, KeyEvent.VK_1);
add(tabbedPane);
tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT);
}
protected JComponent makeTextPanel(String text) {
JPanel panel = new JPanel(false);
JLabel filler = new JLabel(text);
filler.setHorizontalAlignment(JLabel.CENTER);
panel.setLayout(new GridLayout(1, 1));
panel.add(filler);
return panel;
}
}
所以在我的主要课程中我做到了这一点:
Gui_JTabbedPane tabbedpane = new Gui_JTabbedPane();
Gui gui = new Gui();
gui.add( tabbedpane );
gui.setVisible(true);
问题在于它只是显示JFrame
(Gui)而没有JPanel
(&#39; GuiJTabbedPane`),而是我想要的。
相反,如果我编辑第一个类(Gui),则删除initComponents();
,JFrame
未显示,但这次是JPanel
。
如何解决?只使用/编辑这两个类?
由于
答案 0 :(得分:1)
您应该使用Netbeans来完成所有GUI或手动完成。混合两者通常会导致奇怪的行为,因为默认情况下,Netbeans使用GroupLayout
,如果您不使用该布局并使用Netbeans制作的Component
中的组件进行组合,则可能不会表演,就像你刚刚经历的一样。 Savior Self得到了部分答案,因为删除Gui
JFrame
的布局会让一切都很好。
我建议你使用Netbeans,因为它的GUI编辑器很好。你也可以自己做,但一般需要更多的测试。
修改:要将自己的Component
添加到Netbeans调色板,您可以访问Tools
- &gt; Palette
- &gt; Swing Components
,这将打开调色板编辑器(使用netbeans 7.3)。从那里,单击Add from Project
并选择您的项目,该项目将显示可添加的可用组件。选择你想要的那些。
答案 1 :(得分:1)
在GUI编辑器中添加JPanel,并将属性自定义创建代码设置为:
new Gui_JTabbedPane()
现在,创建在initComponents
完成,最后调用pack()
,进行布局。
有一种说法,在构造函数中调用一个可覆盖的(非最终的,非私有的)方法,makeTextPanel
是一种糟糕的样式,因为它出现意外行为:why aren't fields initialized。