亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

設置 Swing BorderLayout 側面板的最小寬度

設置 Swing BorderLayout 側面板的最小寬度

躍然一笑 2023-08-16 10:51:26
我了解 BorderLayout 的某些部分 - 例如,EAST/WEST(或 BEGINNING_OF_LINE/END_OF_LINE)面板組件保持一個寬度,其長度隨著窗口的長度而拉伸。我想在西側放置一個面板,該面板本身具有多個組件 - 在本例中是一個按鈕面板和一個按鈕控制的 JList。我想為該 JList 中的字符串分配最小寬度,但某些東西(可能是 BorderLayout)阻止我設置最小或首選寬度。當我運行下面的代碼時,左側面板中的列表對于“LongNameGame 3”來說足夠寬,但這只是因為我在渲染列表之前添加了字符串。我想設置該 JList 的寬度以容納我選擇的寬度的字符串。稍后我會將其放入 ScrollPane 中,用于比這更寬的字符串,但這是一個不同的問題。我的問題并沒有通過向其他布局管理器推薦來得到解答——如果可能的話,我想知道如何使用 BorderLayout 來做到這一點。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貢獻2041條經驗 獲得超4個贊

為 JList 提供一個足夠寬的原型單元格值以顯示您需要的內容。例如,

gameJList.setPrototypeCellValue("xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

原型值(此處為 String,因為列表已聲明為 a JList<String>)用于設置列表的首選大小,但不會顯示在 JList 中。您可以根據需要使用盡可能大或小的列表。另外,請確保在水平維度中出于相同目的設置可見行數:

gameJList.setVisibleRowCount(20);  // for example


查看完整回答
反對 回復 2023-08-16
  • 1 回答
  • 0 關注
  • 139 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號