我正在創建一個GUI接口來與倉庫的數據庫進行交互。應用程序需要將項目添加到數據庫,更新它們並顯示它們。我在數據庫和表中有一些表,我想創建一個JPanel,並將它們放在一個cardlayout中,這樣我就可以用JMenu項目在它們之間導航。每個JPanel具有相同的形式。在頂部,有一個包含文本框,組合框等的框以在表中添加項目。在這個盒子下面,我有一個帶有1行的JTable,在它下面,我有一個JScrollPane中的JTable來顯示錶格的內容。除了最後一列(寬度= 100,它將包含用於修改的JButton),每列的寬度必須爲150。我使用第一個JTable作爲過濾器(例如,如果第一列包含'1',那麼第二個JTable將僅顯示ID爲'1'的項目)。我不知道如何爲不同的JPanel選擇正確的佈局。目前,每個JPanel都有一個BorderLayout,每個組件放置在中心。但問題是我無法選擇每列的寬度。JTable寬度佈局
0
A
回答
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);
}
}
相關問題
- 1. 佈局寬度css
- 2. Android,佈局屏幕寬度
- 3. CSS - 固定寬度佈局
- 4. Ext.Net 100%寬度佈局
- 5. 寬度JTable單元適合寬度值
- 6. Boostrap.css製作佈局100%寬度/高度
- 7. 獲取寬度和高度的佈局
- 8. 佈局寬度和高度被忽略
- 9. 如何使用1170px寬度的bootstrap固定寬度佈局?
- 10. CSS最小寬度和最大寬度以及靈活佈局
- 11. Android佈局最大寬度或屏幕寬度?
- 12. 如何使Ext.Panel寬度覆蓋其父表佈局的寬度?
- 13. Android按鈕寬度的一半可用寬度 - 佈局
- 14. css佈局固定寬度和可變寬度在同一行
- 15. 自動適合固定寬度佈局到屏幕寬度
- 16. 寬框佈局
- 17. 沒有固定寬度的CSS佈局
- 18. 沒有固定寬度的列布局
- 19. 機器人:相對佈局寬度WRAP_CONTENT
- 20. 自動佈局和滾動型寬度
- 21. 格列布局,最小寬度
- 22. Android動態設置textview佈局寬度
- 23. css頁眉佈局寬度3 divs
- 24. Android片段佈局的寬度錯誤
- 25. CSS Flexbox響應式佈局和%寬度
- 26. Android的佈局圖像填充寬度
- 27. Android桌面佈局寬度概率
- 28. CSS佈局 - 動態寬度DIV
- 29. 照片:wrap_content,但max_width =佈局寬度
- 30. 網格佈局改變寬度
我也使用過,但如果我把表放在滾動窗格中,它不會生效,如果我把它放在borderlayout的中心,它將全部在jframe中的位置。 – ardayigit
你能查看這篇文章嗎? http://stackoverflow.com/questions/953972/java-jtable-setting-column-width – Sirsendu
它不能解決我的問題... – ardayigit