2009-11-12 3 views
-1

JList에 크기 조정 문제가 있습니다 ... 아래 코드는 ... 내 요구 사항은 Panel에 고정 크기의 JList를 추가하는 것입니다. 프레임을 최대화/최소화하면 그에 따라 JList가 증가/감소해야합니다. 제발 도와주세요. 어떻게 이것을 달성 할 수 있습니까?JList로 크기 조정 문제가 있습니까?

안녕 칼, 그것은하지만 위의 경우에 간단한 경우에 작동 :

다음

은 디자인입니다. 그래서 위의 코드를 지금 설명 중입니다 ..

저는 GB 레이아웃의 "TestListControl"이라는 프레임이 있습니다. GB 레이아웃으로 selectDevicesPanel을 추가하십시오. selectDevicesPanel에서 : 이 selectNamesInnerPanel에서 GB 레이아웃 와 selectNamesInnerPanel을 추가 chooseDeviceScrollPane clickToAddDeletePanel selectTeamPanel에서 selectedNameScrollPane : 는 GB 레이아웃 selectNameAddPanel 추가 흐름과 selectTeamPanel을 추가 selectNameAddPanel에서 레이아웃 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

다음 목록 중 어느 것입니까? chooseNamesList 또는 selectedNamesList를 선택 하시겠습니까? –

+0

프레임을 최대화/최소화 할 때 목록 상자를 최대화/최소화해야합니다. – Sidharth

+1

이 GroupLayout 항목으로 문제를 재현하기가 쉽지 않습니다. 테스트 프로그램을 문제를보기 위해 실제로 필요한 소수의 구성 요소로 줄이는 것이 좋습니다. –

답변

0

사람은 내가이 문제를 해결 자신 .. UR 조율을위한 thnks ..actually 내가했던 JList의 양쪽을 잡고 부모 패널과 JEditor에 대한 weightx에는와 무게를주는 실수 pane ... 간단히 우리는 당신이 크기를 조정하고자하는 컴포넌트를 포함하고있는 모든 부모 컨테이너에 대한 가중치 매개 변수를 설정해야합니다.

+0

어떻게 신경 써야 하나? – Gnoupi

+0

Gnoupi 위를 보면 – Sidharth

+0

크기를 조정하려는 모든 구성 요소가 포함 된 모든 상위 컨테이너에 대한 가중치 매개 변수를 설정해야합니다. 분명히 문제를 분명히 해결하기까지 4 시간 전에 준 제안이었습니다. 너 스스로. – camickr

2

이렇게하면 목록이 훨씬 커지지 않습니다.

chooseNamesList.setMaximumSize(new java.awt.Dimension(46, 88));

+0

setNamesList.setMaximumSize (new java.awt.Dimension (146, 188)); 하지만 여전히이 문제가 발생합니다 – Sidharth

+0

안녕하세요 Carl ..이 문제에 대한 해결책이 있습니까? – Sidharth

+0

앞서 언급 한 것처럼 이국적인 GroupLayout 클래스 덕분에 프로그램을 복제하는 데 문제가있었습니다. 그 자체로 해결책을 찾을 수있어서 기쁩니다. –

0

프로토 타입 셀 값을 설정하면 데이터가 변경 될 때 JList의 크기가 조정되지 않습니다.

setPrototypeCellValue (Object) 메소드의 경우 The JList Javadoc page을 참조하십시오.