我正在调整JList的问题... 下面是我的代码...我的要求是将一个具有一些固定大小的JList添加到Panel中,当我最大化/最小化Frame时,JList应该相应地增加/减少。请帮助我......如何实现这一点?
以下是设计:
嗨卡尔, 它适用于简单的情况,但不适用于上述情况。 所以我现在解释上面的代码..
我有一个名为“TestListControl”的框架,带有GB布局。 添加带有GB布局的selectDevicesPanel。 在selectDevicesPanel中: 添加带有GB布局的selectNamesInnerPanel 在selectNamesInnerPanel中: 添加带有GB布局的selectNameAddPanel 使用Flow布局添加selectTeamPanel 在selectNameAddPanel中: chooseDeviceScrollPane clickToAddDeletePanel selectedNameScrollPane 在selectTeamPanel中: selectTeamLabel selectTeamComboBox
public class TestListControl extends javax.swing.JFrame {
public TestListControl() {
initComponents();
}
private void initComponents() {
java.awt.GridBagConstraints gridBagConstraints;
selectDevicesPanel = new javax.swing.JPanel();
selectNamesInnerPanel = new javax.swing.JPanel();
selectNameAddPanel = new javax.swing.JPanel();
chooseDeviceScrollPane = new javax.swing.JScrollPane();
chooseNamesList = new javax.swing.JList();
clickToAddDeletePanel = new javax.swing.JPanel();
clickToAddButton = new javax.swing.JButton();
clickToRemoveButton = new javax.swing.JButton();
selectedNameScrollPane = new javax.swing.JScrollPane();
selectedNamesList = new javax.swing.JList();
selectNameLabel = new javax.swing.JLabel();
selectTeamPanel = new javax.swing.JPanel();
selectTeamLabel = new javax.swing.JLabel();
selectTeamComboBox = new javax.swing.JComboBox();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
selectDevicesPanel.setBorder(javax.swing.BorderFactory
.createTitledBorder("Member Selection"));
selectDevicesPanel.setLayout(new java.awt.GridBagLayout());
selectNamesInnerPanel.setLayout(new java.awt.GridBagLayout());
selectNameAddPanel.setLayout(new java.awt.GridBagLayout());
chooseNamesList.setModel(new javax.swing.AbstractListModel() {
String[] strings = { "XXXX", "YYYY", "ZZZZ" };
public int getSize() {
return strings.length;
}
public Object getElementAt(int i) {
return strings[i];
}
});
chooseNamesList.setMaximumSize(new java.awt.Dimension(46, 88));
chooseNamesList.setMinimumSize(new java.awt.Dimension(94, 98));
chooseDeviceScrollPane.setViewportView(chooseNamesList);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 12, 7, 0);
selectNameAddPanel.add(chooseDeviceScrollPane, gridBagConstraints);
clickToAddDeletePanel.setLayout(new java.awt.GridBagLayout());
clickToAddButton.setText(">>");
clickToAddDeletePanel.add(clickToAddButton,
new java.awt.GridBagConstraints());
clickToRemoveButton.setText("<<");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
clickToAddDeletePanel.add(clickToRemoveButton, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
selectNameAddPanel.add(clickToAddDeletePanel, gridBagConstraints);
selectedNamesList.setModel(new javax.swing.AbstractListModel() {
String[] strings = { "XXXX", "YYYY" };
public int getSize() {
return strings.length;
}
public Object getElementAt(int i) {
return strings[i];
}
});
selectedNamesList.setMinimumSize(new java.awt.Dimension(94, 98));
selectedNameScrollPane.setViewportView(selectedNamesList);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 6, 0);
selectNameAddPanel.add(selectedNameScrollPane, gridBagConstraints);
selectNameLabel.setText("Select Name");
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.NORTHWEST;
gridBagConstraints.insets = new java.awt.Insets(0, 0, 8, 0);
selectNameAddPanel.add(selectNameLabel, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
selectNamesInnerPanel.add(selectNameAddPanel, gridBagConstraints);
selectTeamLabel.setText("Select Team");
selectTeamPanel.add(selectTeamLabel);
selectTeamComboBox.setModel(new javax.swing.DefaultComboBoxModel(
new String[] { "TEAM X", "TEAM Y", "TEAM Z" }));
selectTeamComboBox
.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
selectTeamComboBoxActionPerformed(evt);
}
});
selectTeamPanel.add(selectTeamComboBox);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
selectNamesInnerPanel.add(selectTeamPanel, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
selectDevicesPanel.add(selectNamesInnerPanel, gridBagConstraints);
org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(
getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(layout.createParallelGroup(
org.jdesktop.layout.GroupLayout.LEADING).add(0, 400,
Short.MAX_VALUE).add(
layout.createParallelGroup(
org.jdesktop.layout.GroupLayout.LEADING).add(
layout.createSequentialGroup().add(0, 107,
Short.MAX_VALUE).add(selectDevicesPanel,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
185,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(0, 108, Short.MAX_VALUE))));
layout.setVerticalGroup(layout.createParallelGroup(
org.jdesktop.layout.GroupLayout.LEADING).add(0, 300,
Short.MAX_VALUE).add(
layout.createParallelGroup(
org.jdesktop.layout.GroupLayout.LEADING).add(
layout.createSequentialGroup().add(0, 39,
Short.MAX_VALUE).add(selectDevicesPanel,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE,
221,
org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
.add(0, 40, Short.MAX_VALUE))));
pack();
}
private void selectTeamComboBoxActionPerformed(
java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new TestListControl().setVisible(true);
}
});
}
private javax.swing.JScrollPane chooseDeviceScrollPane;
private javax.swing.JList chooseNamesList;
private javax.swing.JButton clickToAddButton;
private javax.swing.JPanel clickToAddDeletePanel;
private javax.swing.JButton clickToRemoveButton;
private javax.swing.JPanel selectDevicesPanel;
private javax.swing.JPanel selectNameAddPanel;
private javax.swing.JLabel selectNameLabel;
private javax.swing.JPanel selectNamesInnerPanel;
private javax.swing.JComboBox selectTeamComboBox;
private javax.swing.JLabel selectTeamLabel;
private javax.swing.JPanel selectTeamPanel;
private javax.swing.JScrollPane selectedNameScrollPane;
private javax.swing.JList selectedNamesList;
}
答案 0 :(得分:2)
如果你这样做,你的清单不会变得更大:
chooseNamesList.setMaximumSize(new java.awt.Dimension(46, 88));
答案 1 :(得分:0)
答案 2 :(得分:0)
如果设置原型单元格值,则在更改数据时JList不会调整大小。
有关setPrototypeCellValue(Object)方法,请参阅The JList Javadoc page。