我有GridBagLayout,其中我添加了JLabel
,JTextfield
和兩個JButtons
with和圖像,圖像是25x25像素。無論何時我顯示或隱藏按鈕,整個佈局都會移動。我試圖setSize()
,setMinimumSize()
,setPreferredSize()
和setMaximumSize()
但它會忽略那個調整大小的JLabel
和JTextField
。我怎樣才能爲這兩個組件設置修復大小,或者讓GridBagLayout中的所有單元格的大小相同。與JTextField和JButton的GridbagLayout,當JButton可見時重新格式化
JPanel panel = new JPanel();
panel.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 0.5;
c.gridx = 0;
c.gridy = 0;
panel.add(new JLabel("Auftrag Nummer:"), c);
JTextField orderNumberField = new JTextField();
c.gridx = 1;
c.gridy = 0;
panel.add(orderNumberField, c);
JButton searchButton = DefaultLayouts.imageButton("SEARCH");
c.gridx = 0;
c.gridy = 1;
c.insets = new Insets(10, 0, 0, 0);
panel.add(searchButton, c);
JButton checkButton = DefaultLayouts.imageButton("CHECK");
c.gridx = 1;
c.gridy = 1;
c.insets = new Insets(10, 0, 0, 0);
panel.add(checkButton, c);
DefautlLayouts.imageButton
獲取路徑和工具提示,並設置一些默認
public static JButton imageButton(String propertiesName) {
JButton button = DefaultLayouts.button();
button.setIcon(new ImageIcon(imagesProperties.getProperty(propertiesName + "_PATH")));
button.setToolTipText(imagesProperties.getProperty(propertiesName + "_TOOLTIP"));
button.setContentAreaFilled(false);
button.setFocusPainted(false);
button.setBorder(BorderFactory.createEmptyBorder());
return button;
}
不,這是非常期望的行爲,因爲不可見的組件不用於計算佈局要求。也許使用空白圖像或組件代替 – MadProgrammer
1)爲了更快地獲得更好的幫助,請發佈[MCVE]或[簡短,獨立,正確的示例](http://www.sscce.org/)。 2)以最小尺寸提供ASCII藝術或簡單的GUI圖形*圖形,並且如果可調整大小,則具有更大的寬度和高度。 (也可以應用該邏輯來確定組件是否因其可見性而被切換。) –