我了解 BorderLayout 的某些部分 - 例如,EAST/WEST(或 BEGINNING_OF_LINE/END_OF_LINE)面板組件保持一個(gè)寬度,其長(zhǎng)度隨著窗口的長(zhǎng)度而拉伸。我想在西側(cè)放置一個(gè)面板,該面板本身具有多個(gè)組件 - 在本例中是一個(gè)按鈕面板和一個(gè)按鈕控制的 JList。我想為該 JList 中的字符串分配最小寬度,但某些東西(可能是 BorderLayout)阻止我設(shè)置最小或首選寬度。當(dāng)我運(yùn)行下面的代碼時(shí),左側(cè)面板中的列表對(duì)于“LongNameGame 3”來(lái)說(shuō)足夠?qū)?,但這只是因?yàn)槲以阡秩玖斜碇疤砑恿俗址N蚁朐O(shè)置該 JList 的寬度以容納我選擇的寬度的字符串。稍后我會(huì)將其放入 ScrollPane 中,用于比這更寬的字符串,但這是一個(gè)不同的問(wèn)題。我的問(wèn)題并沒(méi)有通過(guò)向其他布局管理器推薦來(lái)得到解答——如果可能的話,我想知道如何使用 BorderLayout 來(lái)做到這一點(diǎn)。package comm;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Dimension;import java.awt.FlowLayout;import java.awt.GridLayout;import java.util.Vector;import javax.swing.BorderFactory;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JList;import javax.swing.JPanel;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.border.Border;public class BLPlay{ public static void main(String ... arguments) { JFrame frame = buildLoungeFrame(); frame.setVisible(true); } private static JFrame buildLoungeFrame() { JFrame loungeFrame = new JFrame("BLPlay"); loungeFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); loungeFrame.setLayout(new BorderLayout(10,10)); // left panel is another BorderLayout panel with buttons and a list of games JPanel gameListControlPanel = new JPanel(new BorderLayout()); Border innerBorder = BorderFactory.createLineBorder(Color.BLACK, 2); Border outerBorder = BorderFactory.createEmptyBorder(3,3,3,3); gameListControlPanel.setBorder(BorderFactory.createCompoundBorder(outerBorder, innerBorder)); String[] gamePanelButtonLabels = { "New", "Join", "Leave", "End" }; JPanel gamePanelButtons = new JPanel(new GridLayout(gamePanelButtonLabels.length,1)); addButtons(gamePanelButtons, gamePanelButtonLabels); JPanel gamePanelButtonsContainerPanel = new JPanel(); gamePanelButtonsContainerPanel.add(gamePanelButtons); gameListControlPanel.add(gamePanelButtonsContainerPanel, BorderLayout.WEST);
1 回答

縹緲止盈
TA貢獻(xiàn)2041條經(jīng)驗(yàn) 獲得超4個(gè)贊
為 JList 提供一個(gè)足夠?qū)挼脑蛦卧裰狄燥@示您需要的內(nèi)容。例如,
gameJList.setPrototypeCellValue("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
原型值(此處為 String,因?yàn)榱斜硪崖暶鳛?a JList<String>
)用于設(shè)置列表的首選大小,但不會(huì)顯示在 JList 中。您可以根據(jù)需要使用盡可能大或小的列表。另外,請(qǐng)確保在水平維度中出于相同目的設(shè)置可見(jiàn)行數(shù):
gameJList.setVisibleRowCount(20); // for example
添加回答
舉報(bào)
0/150
提交
取消