2015-06-16 4 views
0

Я пытаюсь добавить две панели прокрутки вместе с одной меткой и одной кнопкой в ​​JPanel с помощью GridBagLayout. В то время как первая панель прокрутки содержит JList и вторую панель прокрутки, содержащую JTable. Ниже приведен код:Добавление области прокрутки в GridBagLayout

JPanel capabilityPanel = new JPanel(new GridBagLayout()); 
    GridBagConstraints constraints = new GridBagConstraints(); 

    JScrollPane capabilityScrollPane = new JScrollPane(cbList, 
      ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, 
      ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); 


    JScrollPane capabilityTableScrollPane = new JScrollPane(table, 
      ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS, 
      ScrollPaneConstants.HORIZONTAL_SCROLLBAR_ALWAYS); 

    JButton saveButton = new JButton("Save Table Values"); 

    JLabel capabilityLabel = new JLabel("Boolean Capability List"); 
    constraints.fill = GridBagConstraints.HORIZONTAL; 
    constraints.gridx = 0; 
    constraints.gridy = 0; 
    capabilityPanel.add(capabilityLabel, constraints); 

    constraints.gridx = 1; 
    constraints.gridy = 0; 
    capabilityPanel.add(capabilityScrollPane,constraints); 

    constraints.gridx = 0; 
    constraints.gridy = 1; 
    capabilityPanel.add(saveButton, constraints); 

    constraints.gridx = 1; 
    constraints.gridy = 1; 
    capabilityPanel.add(capabilityTableScrollPane, constraints); 

Проблема заключается в том, когда я непосредственно при добавлении таблицы в панели вместо соответствующей панели прокрутки, он правильно отображать на экране. Но когда я добавляю панель прокрутки, отображается только три элемента, таблица вообще не отображается. Я хочу, чтобы таблица отображалась с помощью прокрутки.

Не могли бы вы помочь мне в этой ситуации?

+2

1) Для лучшей помощи рано, опубликовать [MCVE] (http://stackoverflow.com/help/mcve) (минимальная Полный Проверяемость пример) или [SSCCE] (http://www.sscce.org/) (Short, Self Contained, Correct Example). 2) Предоставить ASCII-искусство или простой рисунок макета GUI с минимальным размером и, если он изменен, с большей шириной и высотой. –

+0

Попробуйте [это] (http://stackoverflow.com/a/21943545/230513). – trashgod

ответ

0

Это создаст один outerpanel
два внутренней панели
один для списка
Один за столом
Layout

Layout Structure

пакет новыйПакет;

public class NewJFrame extends javax.swing.JFrame { 

/** 
* Creates new form NewJFrame 
*/ 
public NewJFrame() { 
    initComponents(); 
} 

/** 
* This method is called from within the constructor to initialize the form. 
* WARNING: Do NOT modify this code. The content of this method is always 
* regenerated by the Form Editor. 
*/ 
@SuppressWarnings("unchecked") 
// <editor-fold defaultstate="collapsed" desc="Generated Code">       
private void initComponents() { 

    outerPanel = new javax.swing.JPanel(); 
    listPanel = new javax.swing.JPanel(); 
    jLabel1 = new javax.swing.JLabel(); 
    jScrollPane1 = new javax.swing.JScrollPane(); 
    jList1 = new javax.swing.JList(); 
    tablePanel = new javax.swing.JPanel(); 
    jScrollPane2 = new javax.swing.JScrollPane(); 
    jTable1 = new javax.swing.JTable(); 
    jButton1 = new javax.swing.JButton(); 

    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 

    outerPanel.setLayout(new java.awt.BorderLayout()); 

    jLabel1.setText("Boolean Capability List"); 

    jList1.setModel(new javax.swing.AbstractListModel() { 
     String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", "Item 1", "Item 2", "Item 3", "Item 4", "Item 5", " " }; 
     public int getSize() { return strings.length; } 
     public Object getElementAt(int i) { return strings[i]; } 
    }); 
    jScrollPane1.setViewportView(jList1); 

    javax.swing.GroupLayout listPanelLayout = new javax.swing.GroupLayout(listPanel); 
    listPanel.setLayout(listPanelLayout); 
    listPanelLayout.setHorizontalGroup(
     listPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(listPanelLayout.createSequentialGroup() 
      .addComponent(jLabel1) 
      .addGap(0, 177, Short.MAX_VALUE)) 
     .addComponent(jScrollPane1) 
    ); 
    listPanelLayout.setVerticalGroup(
     listPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(listPanelLayout.createSequentialGroup() 
      .addComponent(jLabel1) 
      .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
      .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addGap(0, 15, Short.MAX_VALUE)) 
    ); 

    outerPanel.add(listPanel, java.awt.BorderLayout.NORTH); 

    jTable1.setModel(new javax.swing.table.DefaultTableModel(
     new Object [][] { 
      {null, null, null, null}, 
      {null, null, null, null}, 
      {null, null, null, null}, 
      {null, null, null, null}, 
      {null, null, null, null}, 
      {null, null, null, null}, 
      {null, null, null, null}, 
      {null, null, null, null}, 
      {null, null, null, null}, 
      {null, null, null, null}, 
      {null, null, null, null}, 
      {null, null, null, null}, 
      {null, null, null, null}, 
      {null, null, null, null}, 
      {null, null, null, null}, 
      {null, null, null, null}, 
      {null, null, null, null}, 
      {null, null, null, null}, 
      {null, null, null, null}, 
      {null, null, null, null}, 
      {null, null, null, null} 
     }, 
     new String [] { 
      "Title 1", "Title 2", "Title 3", "Title 4" 
     } 
    )); 
    jScrollPane2.setViewportView(jTable1); 

    jButton1.setText("Save Values"); 

    javax.swing.GroupLayout tablePanelLayout = new javax.swing.GroupLayout(tablePanel); 
    tablePanel.setLayout(tablePanelLayout); 
    tablePanelLayout.setHorizontalGroup(
     tablePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(tablePanelLayout.createSequentialGroup() 
      .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 303, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addGap(0, 0, Short.MAX_VALUE)) 
     .addGroup(tablePanelLayout.createSequentialGroup() 
      .addGap(101, 101, 101) 
      .addComponent(jButton1) 
      .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
    ); 
    tablePanelLayout.setVerticalGroup(
     tablePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
     .addGroup(tablePanelLayout.createSequentialGroup() 
      .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 201, javax.swing.GroupLayout.PREFERRED_SIZE) 
      .addGap(27, 27, 27) 
      .addComponent(jButton1) 
      .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
    ); 

    outerPanel.add(tablePanel, java.awt.BorderLayout.SOUTH); 

    getContentPane().add(outerPanel, java.awt.BorderLayout.CENTER); 

    pack(); 
}// </editor-fold>       

/** 
* @param args the command line arguments 
*/ 
public static void main(String args[]) { 
    /* Set the Nimbus look and feel */ 
    //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) "> 
    /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. 
    * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
    */ 
    try { 
     for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { 
      if ("Nimbus".equals(info.getName())) { 
       javax.swing.UIManager.setLookAndFeel(info.getClassName()); 
       break; 
      } 
     } 
    } catch (ClassNotFoundException ex) { 
     java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (InstantiationException ex) { 
     java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (IllegalAccessException ex) { 
     java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } catch (javax.swing.UnsupportedLookAndFeelException ex) { 
     java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); 
    } 
    //</editor-fold> 

    /* Create and display the form */ 
    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      new NewJFrame().setVisible(true); 
     } 
    }); 
} 

// Variables declaration - do not modify      
private javax.swing.JButton jButton1; 
private javax.swing.JLabel jLabel1; 
private javax.swing.JList jList1; 
private javax.swing.JScrollPane jScrollPane1; 
private javax.swing.JScrollPane jScrollPane2; 
private javax.swing.JTable jTable1; 
private javax.swing.JPanel listPanel; 
private javax.swing.JPanel outerPanel; 
private javax.swing.JPanel tablePanel; 
// End of variables declaration     
} 

Выходной

Final Output

+0

фантастический Мадхан! Прекрасно работает ! Только один вопрос. Возможно ли разместить внешнюю панель внутри другой панели по вертикали? На самом деле мне нужно разместить этот параметр (метка, две панели прокрутки, кнопка) под одним текстовым полем, который уже находится внутри панели. Теперь, когда я добавляю внешнюю панель в уже существующую панель, внешняя панель, занимающая все пространство и область текста, не видна. – user3274247

+0

Я предлагаю вам использовать Netbeans, потому что легко спроектировать ваш макет с помощью простого перетаскивания. И пройдите различные макеты в java о том, как их использовать. – Madhan

+0

Я использовал только netbeans, но не знал эту функцию. еще раз спасибо ! – user3274247

Смежные вопросы