当前位置: 首页 > 知识库问答 >
问题:

JTable宽度布局

养慈
2023-03-14

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

共有2个答案

洪楷
2023-03-14

对于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);
    }
}    
湛宝
2023-03-14

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

}
 类似资料:
  • 问题内容: 我正在尝试创建一个画布元素,该元素占用视口宽度和高度的100%。 您可以在我的示例中看到这种情况的发生,但是它正在Chrome和FireFox中添加滚动条。如何防止多余的滚动条,仅将窗口的宽度和高度精确设置为画布的大小? 问题答案: 为了始终使画布全屏显示宽度和高度,这意味着即使调整了浏览器的大小,也需要在将画布调整为window.innerHeight和window.innerWid

  • 问题内容: 是否可以固定HTML5 元素的宽度和高度? 通常的方法如下: 问题答案: 的DOM元素具有和对应的属性的和属性。在JavaScript代码中将它们设置为数值,以调整画布的大小。例如: 请注意,这将清除画布,但是您应该遵循此操作来处理那些不能完全清除画布的浏览器。尺寸更改后,您需要重绘要显示的所有内容。 进一步注意的是,高度和宽度是用于绘制逻辑帆布尺寸和是 不同的 距离和CSS属性。如果

  • 问题内容: 是否可以将宽度设置为相同的高度(比率1:1)? 例 CSS 问题答案: 使用jQuery,您可以通过以下方式实现此目的

  • 问题内容: 是否可以将宽度设置为相同的高度(比率1:1)? 例 CSS 问题答案: 使用jQuery,您可以通过以下方式实现此目的

  • 我正在Bootstrap中创建一个简单的单页布局,但是我正在为大屏幕和移动设备上的div的背景颜色而苦苦挣扎。当在大屏幕上时,div的尺寸是100VW宽和100VH高--这一切都很好。问题是,当我向下缩放视口时,div的所有内容下面没有所需的颜色,内容溢出到第一个div下面的第二个div中。 我怎样才能使div的所有内容下面都有一种颜色,不管视区大小是多少?(宽度或高度的100%没有帮助,有边框在

  • 问题内容: 我有一个UILabel,一个UIView在情节提要中并排包含其他子视图。UIView应该紧靠UILabel的右边缘(跟踪约束为1),但我还需要UIlabel(左侧的UIlabel)将其宽度设置为等于其内容大小,除非它达到最大宽度。视觉上: |标签文字| | UIViewWithSubviews | 我需要以下约束: 1)标签应明智地调整宽度大小,除非达到最大大小,并且高度也是动态的,这