[英]resize problem with JList?
i am having resizing problem with JList ... Below is my code ...my requirement is to add a JList with some fixed size into a Panel and when i maximize/minimize the Frame the JList should increase/decrease accordingly .please help me ..how to achieve this? 我正在调整JList的大小...下面是我的代码...我的要求是将一个固定大小的JList添加到Panel中,当我最大化/最小化Frame时,JList应该相应地增加/减少。请帮助我..如何实现?
Following is the design: 以下是设计:
Hi Carl , It works in simple cases but not in the above case. 嗨,卡尔,它在简单的情况下有效,但在上述情况下不起作用。 So i am explaning the above code now ..
所以我现在解释上面的代码..
i have a frame called "TestListControl" with GB layout. 我有一个名为“ TestListControl”的GB布局框架。 Add selectDevicesPanel with GB layout.
添加具有GB布局的selectDevicesPanel。 In selectDevicesPanel : Add selectNamesInnerPanel with GB layout In selectNamesInnerPanel : Add selectNameAddPanel with GB layout Add selectTeamPanel with Flow layout In selectNameAddPanel: chooseDeviceScrollPane clickToAddDeletePanel selectedNameScrollPane In selectTeamPanel : selectTeamLabel selectTeamComboBox
在selectDevicesPanel中:添加具有GB布局的selectNamesInnerPanel在selectNamesInnerPanel中:添加具有GB布局的selectNameAddPanel添加具有流布局的selectTeamPanel在selectNameAddPanel:selectDeviceScrollPane 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;
}
如果您这样做,您的列表将不会变得更大:
chooseNamesList.setMaximumSize(new java.awt.Dimension(46, 88));
If you set a prototype cell value, the JList will not resize when the data is changed. 如果设置原型单元格值,则更改数据时JList不会调整大小。
See The JList Javadoc page for the setPrototypeCellValue(Object) method. 有关setPrototypeCellValue(Object)方法的信息,请参见JList Javadoc页面 。
伙计们,我自己解决了这个问题..谢谢您的协调..实际上我犯了一个错误,即给拥有Jlist和JEditor窗格的父面板赋予weightx和weighty……简而言之,我们需要设置包含要调整大小的任何组件的所有父容器的重量参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.