【问题标题】:JTable width layoutJTable宽度布局
【发布时间】:2016-11-30 04:22:07
【问题描述】:

我正在创建一个 GUI 界面来与仓库的数据库进行交互。应用程序需要向数据库中添加项目、更新它们并显示它们。我在数据库中有一些表,对于每个表,我想创建一个 JPanel,并将它们放在卡片布局中,这样我就可以使用 JMenu 项在它们之间导航。每个 JPanel 具有相同的形式。在顶部,有一个带有文本字段、组合框等的框,用于在表格中添加项目。在框下,我有一个有 1 行的 JTable,在此之下,我在 JScrollPane 中有一个 JTable 来显示表格的内容。除了最后一列(宽度=100,它将包含一个用于修改的JButton)之外,每一列都需要有150的宽度。我使用第一个 JTable 作为过滤器(例如,如果第一列包含“1”,那么第二个 JTable 将只显示 ID 以“1”开头的项目)。我不知道如何为不同的 JPanel 选择正确的布局。目前,每个 JPanel 都有一个 BorderLayout,每个组件都放置在中心。但问题是我无法选择每列的宽度。

【问题讨论】:

    标签: java layout jtable jscrollpane


    【解决方案1】:

    对于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);
        }
    }    
    

    【讨论】:

    • 我也用过,但是如果我把表格放在滚动窗格中,它不会生效,如果我把它放在边框布局的中心,它会占据所有位置jframe。
    • 你能检查一下这个帖子吗? stackoverflow.com/questions/953972/…
    • 你能把你设置大小的代码sn-p给我吗?
    【解决方案2】:

    好吧,我终于解决了我自己的问题。实际上,我需要将 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(); 
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多