2016-07-26 35 views
0

私は倉庫のデータベースと対話するためのGUIインターフェイスを作成しています。アプリケーションは、アイテムをデータベースに追加し、更新して表示する必要があります。私はデータベースにいくつかのテーブルを持っており、各テーブルではJPanelを作成してカードレイアウトに入れたいので、JMenuアイテムでそれらの間を移動できます。それぞれのJPanelは同じ形式です。上部には、テーブルに項目を追加するためのテキストフィールド、コンボボックスなどのボックスがあります。このボックスの下には、1行のJTableがあり、その下にJScrollPaneにJTableがあり、テーブルの内容を表示しています。最後の1列を除く各列の幅は150です(幅= 100、変更用のJButtonが含まれます)。最初のJTableをフィルタとして使用します(たとえば、最初のカラムに '1'が含まれている場合、2番目のJTableはIDが '1'で始まるアイテムのみを表示します)。私は異なるJPanelの正しいレイアウトを選択する方法を知らない。現在、各JPanelにはBorderLayoutがあり、各コンポーネントは中央に配置されています。しかし問題は、各列の幅を選択できないことです。JTableの幅のレイアウト

答えて

0

最後に、私は自分の問題を解決しました。実際には、JTableをJPanelに、JPanelをJScrollPaneに配置する必要があります。ここでは、コードは次のとおりです。

public class Brouillon extends JFrame { 

    public Brouillon() { 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JPanel jpContent = new JPanel(); 
     JPanel jpCards = new JPanel(); 
     jpContent.setLayout(new BoxLayout(jpContent, BoxLayout.PAGE_AXIS)); 
     CardLayout clSelect = new CardLayout(); 
     jpCards.setLayout(clSelect); 
     JButton jbTest = new JButton(); 
     jbTest.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       clSelect.next(jpCards); 
      } 
     }); 
     jpContent.add(jbTest); 
     JPanel jpContainer1 = new JPanel(); 
     JTable jtData1 = new JTable(new Object[2][3], new String[] {"1", "2", "3"}); 
     jtData1.getColumnModel().getColumn(0).setPreferredWidth(150); 
     jtData1.getColumnModel().getColumn(1).setPreferredWidth(150); 
     jtData1.getColumnModel().getColumn(2).setPreferredWidth(50); 
     JPanel jpTemp1 = new JPanel(); 
     jpTemp1.setLayout(new BorderLayout()); 
     jpTemp1.add(jtData1.getTableHeader(), BorderLayout.NORTH); 
     jpTemp1.add(jtData1, BorderLayout.CENTER); 
     JScrollPane jspData1 = new JScrollPane(jpTemp1); 
     jpContainer1.add(jspData1); 

     JPanel jpContainer2 = new JPanel(); 
     JTable jtData2 = new JTable(new Object[2][7], new String[] {"1", "2", "3", "4", "5", "6", "7"}); 
     jtData2.getColumnModel().getColumn(0).setPreferredWidth(150); 
     jtData2.getColumnModel().getColumn(1).setPreferredWidth(150); 
     jtData2.getColumnModel().getColumn(2).setPreferredWidth(150); 
     jtData2.getColumnModel().getColumn(3).setPreferredWidth(150); 
     jtData2.getColumnModel().getColumn(4).setPreferredWidth(150); 
     jtData2.getColumnModel().getColumn(5).setPreferredWidth(150); 
     jtData2.getColumnModel().getColumn(6).setPreferredWidth(50); 
     JPanel jpTemp2 = new JPanel(); 
     jpTemp2.setLayout(new BorderLayout()); 
     jpTemp2.add(jtData2, BorderLayout.CENTER); 
     jpTemp2.add(jtData2.getTableHeader(), BorderLayout.NORTH); 
     JScrollPane jspData2 = new JScrollPane(jpTemp2); 
     jpContainer2.add(jspData2); 
     jpCards.add(jpContainer2); 
     jpCards.add(jpContainer1); 
     jpContent.add(jpCards); 


     this.getContentPane().add(jpContent); 

     this.pack(); 
     this.setVisible(true); 
    } 

    public static void main(String[] args) { 
     new Brouillon(); 
    } 

} 
0

jTableでは、列サイズを設定できます。 おそらく以下の例が役に立ちます。これがあなたが探しているものなら教えてください!

TableColumn column = null; 
for (int i = 0; i < 3; i++) { 
    column = table.getColumnModel().getColumn(i); 
    if (i == 2) { 
     column.setPreferredWidth(100); //sport column is bigger 
    } else { 
     column.setPreferredWidth(50); 
    } 
}  
+0

私はそれをもを使用しているが、私はスクロールペインでテーブルを置けば、それは有効になりませんし、私はBorderLayoutの中心部に入れた場合、それはすべて取りますjframeの場所。 – ardayigit

+0

この投稿を確認してください。 http://stackoverflow.com/questions/953972/java-jtable-setting-column-width – Sirsendu

+0

それは私の問題を解決していません... – ardayigit

関連する問題