1 回答

TA貢獻1827條經驗 獲得超8個贊
給我們一個它目前所做的事情的圖片并沒有真正的幫助,因為我們不知道你想要實現什么,很難提出一個確切的建議。
因此,所看到的是試圖:
在頂部顯示 3 個按鈕
讓文本區域填充底部的剩余空間
因此,我建議您永遠不需要使用單個布局管理器。很多時候,布局管理器的組合更容易。
所以我建議你:
使用邊界布局作為主布局。
為按鈕創建一個面板,并添加到邊框布局
Page_START
將滾動窗格添加到“邊界布局”中。
CENTER
所以基本代碼是:
setLayout( new BorderLayout() );
JPanel buttonsPanel = new JPanel();
buttonsPanel.add(run);
buttonsPane.add((open);
buttonsPanel.add(exit);
add(buttonsPanel, BorderLayout.PAGE_START);
JTextArea textArea = new JTextArea(10, 30); // give text area a default preferred size
add(new JScrollPane(textArea), BorderLayout.CENTER);
比嘗試使用網格包布局更簡單,代碼更少。
但是,如果您想練習使用網格包布局,請首先閱讀有關如何使用網格包布局的 Swing 教程,以獲取有關約束的更多信息。
基本代碼可能如下所示:
gbc.gridx = 0;
gbc.gridy = 0;
add(run, gbc);
gbc.gridx = 1;
gbc.gridy = 0;
add(open, gbc);
gbc.gridx = 2;
gbc.gridy = 0;
add(exit, gbc);
localConsole = new JTextArea(5, 20);
JScrollPane scrollPane = new JScrollPane(localConsole);
gbc.fill = GridBagConstraints.CENTER;
gbc.gridx = 0;
gbc.gridy = 1;
gbc.gridwidth = 3; // try this with 1 and 2 to see the difference.
add(scrollPane, gbc);
也就是說,您不能只是隨機使用網格x/網格寬度/網格高度值。
組件需要顯示在網格中。你不能在網格中留下間隙。
因此,如果您希望按鈕排成一行,則需要為相同的網格值按順序遞增 gridx。
如果需要按鈕下方的文本區域,請按順序遞增網格,并從新的 gridx 值開始。
添加回答
舉報