私はパネルを設計していて、このパネルを次のOptionPane Confirm Dialog
ように使用しています。
JOptionPane.showConfirmDialog(null, slaveGroupPanel, messages.getString("centrum.manageGroups"), JOptionPane.OK_CANCEL_OPTION);
私のグリッドバッグの制約は次のとおりです。
addGroupButton.setText(messages.getString("centrum.slavegroup.add"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 6;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
add(addGroupButton, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
add(addGroupTextField, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
add(groupNameLabel, gridBagConstraints);
groupComboBox.setModel(new DefaultComboBoxModel(slaveGroupHash.keySet().toArray() ));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.weightx = 1;
add(groupComboBox, gridBagConstraints);
allSlavesList.setModel(new DefaultListModel());
for (int i = 0; i < allSlaves.length; i++) {
((DefaultListModel)allSlavesList.getModel()).addElement(allSlaves[i]);
}
allSlavesList.setVisibleRowCount(4);
jScrollPane2.setViewportView(allSlavesList);
jScrollPane2.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.gridwidth = 3;
gridBagConstraints.gridheight = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 0.45;
gridBagConstraints.weighty = 1.0;
add(jScrollPane2, gridBagConstraints);
slavesInGroupList.setModel(new DefaultListModel());
slavesInGroupList.setVisibleRowCount(4);
jScrollPane3.setViewportView(slavesInGroupList);
jScrollPane3.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 3;
gridBagConstraints.gridwidth = 3;
gridBagConstraints.gridheight = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 0.45;
gridBagConstraints.weighty = 1.0;
add(jScrollPane3, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
add(allSlavesLabel, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
add(slavesInGroupLabel, gridBagConstraints);
addSlaveButton.setIcon(GeneralObjects.getrightIcon());
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 3;
gridBagConstraints.weightx = 0.1;
gridBagConstraints.weighty = 1.0;
add(addSlaveButton, gridBagConstraints);
deleteSlaveButton.setIcon(GeneralObjects.getleftIcon());
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 4;
gridBagConstraints.weightx = 0.1;
gridBagConstraints.weighty = 1.0;
add(deleteSlaveButton, gridBagConstraints);
renameButton.setText(messages.getString("centrum.slavegroup.rename"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 6;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
add(renameButton, gridBagConstraints);
deleteButton.setText(messages.getString("centrum.slavegroup.delete"));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 5;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
add(deleteButton, gridBagConstraints);
ただし、添付のスクリーンショットでわかるように、テキストフィールドと追加ボタンの間には2つのギャップがあります。また、削除ボタンと名前変更ボタンの間にギャップが発生します。しかし、私はそれらのギャップを望んでいません。weightx = 1;
インセットを定義しておらず、コンボボックスのテキストフィールドもあるfill = java.awt.GridBagConstraints.HORIZONTAL;
ので、ギャップなしで可能な限り水平方向に拡張することを期待しています。しかし、なぜそれらのギャップが発生するのでしょうか?
次に、右側のJlistが左側のJlistよりも幅が広いことがはっきりとわかります。ただし、両方のJList(実際にはJListを含むScrollPanes)にはgridwidth
、weightx
とfill
パラメーターが同じ値に設定されています。ですから、同じサイズになると思います。何かが足りないようです。
SSCCEは以下に追加されます。
import javax.swing.*;
import java.awt.*;
public class SSCCE {
private javax.swing.JButton addGroupButton;
private javax.swing.JTextField addGroupTextField;
private javax.swing.JButton addSlaveButton;
private javax.swing.JList allSlavesList;
private javax.swing.JButton deleteButton;
private javax.swing.JButton deleteSlaveButton;
private javax.swing.JComboBox groupComboBox;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JScrollPane jScrollPane3;
private javax.swing.JButton renameButton;
private javax.swing.JLabel groupNameLabel;
private javax.swing.JLabel allSlavesLabel;
private javax.swing.JLabel slavesInGroupLabel;
private javax.swing.JList slavesInGroupList;
public SSCCE() {
}
public JPanel createPanel(){
JPanel panel = new JPanel();
panel.setLayout(new java.awt.GridBagLayout());
addGroupButton=new javax.swing.JButton();
addGroupTextField=new javax.swing.JTextField();
addSlaveButton=new javax.swing.JButton();
allSlavesList=new javax.swing.JList();
deleteButton=new javax.swing.JButton();
deleteSlaveButton=new javax.swing.JButton();
groupComboBox=new javax.swing.JComboBox();
jScrollPane2=new javax.swing.JScrollPane();
jScrollPane3=new javax.swing.JScrollPane();
renameButton=new javax.swing.JButton();
groupNameLabel=new javax.swing.JLabel();
allSlavesLabel=new javax.swing.JLabel();
slavesInGroupLabel=new javax.swing.JLabel();
slavesInGroupList=new javax.swing.JList();
allSlavesList.setModel(new DefaultListModel());
slavesInGroupList.setModel(new DefaultListModel());
GridBagConstraints gridBagConstraints;
addGroupButton.setText("add");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 6;
gridBagConstraints.gridy = 0;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
panel.add(addGroupButton, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.weightx = 1.0;
panel.add(addGroupTextField, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
panel.add(groupNameLabel, gridBagConstraints);
groupComboBox.setModel(new DefaultComboBoxModel(new Object[]{"one","two","three"}));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
gridBagConstraints.weightx = 1;
panel.add(groupComboBox, gridBagConstraints);
allSlavesList.setVisibleRowCount(4);
jScrollPane2.setViewportView(allSlavesList);
jScrollPane2.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.gridwidth = 3;
gridBagConstraints.gridheight = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 0.45;
gridBagConstraints.weighty = 1.0;
panel.add(jScrollPane2, gridBagConstraints);
slavesInGroupList.setVisibleRowCount(4);
jScrollPane3.setViewportView(slavesInGroupList);
jScrollPane3.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 3;
gridBagConstraints.gridwidth = 3;
gridBagConstraints.gridheight = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 0.45;
gridBagConstraints.weighty = 1.0;
panel.add(jScrollPane3, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
panel.add(allSlavesLabel, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
panel.add(slavesInGroupLabel, gridBagConstraints);
//addSlaveButton.setIcon(GeneralObjects.getrightIcon());
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 3;
gridBagConstraints.weightx = 0.1;
gridBagConstraints.weighty = 1.0;
panel.add(addSlaveButton, gridBagConstraints);
//deleteSlaveButton.setIcon(GeneralObjects.getleftIcon());
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 4;
gridBagConstraints.weightx = 0.1;
gridBagConstraints.weighty = 1.0;
panel.add(deleteSlaveButton, gridBagConstraints);
renameButton.setText("rename");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 6;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
panel.add(renameButton, gridBagConstraints);
deleteButton.setText("delete");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 5;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
panel.add(deleteButton, gridBagConstraints);
((DefaultListModel)allSlavesList.getModel()).addElement("one");
((DefaultListModel)allSlavesList.getModel()).addElement("two");
((DefaultListModel)allSlavesList.getModel()).addElement("three");
((DefaultListModel)slavesInGroupList.getModel()).addElement("one");
((DefaultListModel)slavesInGroupList.getModel()).addElement("two");
((DefaultListModel)slavesInGroupList.getModel()).addElement("three");
panel.setPreferredSize(new Dimension(600,300));
return panel;
}
public static void main(String[] args){
SSCCE a = new SSCCE();
JOptionPane.showConfirmDialog(null, a.createPanel(), "centrum.manageGroups", JOptionPane.OK_CANCEL_OPTION);
}
}