2 回答

TA貢獻2039條經(jīng)驗 獲得超8個贊
JPanel jp1 = new JPanel();
JPanel jp2 = new JPanel();
JPanel jp3 = new JPanel();
setLayout(new GridBagLayout());
上面的代碼是為frame設(shè)置布局管理器,這不是你想做的。
面板的默認(rèn)布局管理器是 FlowLayout(因為您沒有指定布局管理器)。
您要為每個面板設(shè)置布局管理器:
JPanel jp1 = new JPanel( pick a layout manager);
JPanel jp2 = new JPanel( pick a layout manager);
JPanel jp3 = new JPanel( pick a layout manager);
//setLayout(new GridBagLayout());
因此,您添加到選項卡的每個面板都可以有不同的布局管理器來實現(xiàn)您想要的布局。您還可以使用不同的布局管理器嵌套面板,以提供更大的靈活性。
每個選項卡的布局完全獨立于其他選項卡。唯一的關(guān)系是所有選項卡共享相同的空間,因此選項卡式窗格的首選大小將是最大選項卡的首選大小。
但是我想使用某種布局來設(shè)置頂部的文本,然后在每個選項卡的中間使用按鈕,在選項卡的底部有 Jtextarea 用于流輸出。任何幫助將不勝感激。這是我的代碼:
因此,也許您可以從主面板的 BorderLayout 開始添加到選項卡。然后您可以根據(jù)需要創(chuàng)建其他面板以在 BorderLayout 的 PAGE_START、CENTER、PAGE_END 中顯示該組件。閱讀有關(guān)布局管理器的 Swing 教程,了解一些示例以幫助您入門。
編輯:
按照我上面的建議,您可以執(zhí)行以下操作:
JPanel top = new JPanel( new GridLayout(0, 3) );
top.add( new JLabel("Label1") );
top.add( new JLabel("Label2") );
top.add( new JLabel("Label3") );
JTextArea textArea = new JTextArea(5, 30);
JPanel bottom = new JPanel( new GridLayout(0, 2) );
bottom.add( new JButton("Button1") );
bottom.add( new JButton("Button2") );
JPanel tab1 = new JPanel( new BorderLayout() );
tab1.add(top, BorderLayout.PAGE_START);
tab1.add(new JScrollPane(textArea), BorderLayout.CENTER);
tab1.add(bottom, BorderLayout.PAGE_END);
JTabbedPane tabbedPane = new JTabbedPane();
tabbedPane.addTab("Tab1", tab1);
frame.add(tabbedPane);
添加回答
舉報