Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我的JTable无法扩展到其所在面板的全宽_Java_Swing_Jtable_Size - Fatal编程技术网

Java 我的JTable无法扩展到其所在面板的全宽

Java 我的JTable无法扩展到其所在面板的全宽,java,swing,jtable,size,Java,Swing,Jtable,Size,如何使我的JTable充分利用父面板的可用性?我曾尝试使用setSize或setPreferredSize,但没有成功。后者实际上制作了一个非常小的表格 JPanel panel = new JPanel(new GridBagLayout()); GridBagConstraints constraints = new GridBagConstraints(); constraints.gridx = 0; constraints.gridy = 0; cons

如何使我的JTable充分利用父面板的可用性?我曾尝试使用setSize或setPreferredSize,但没有成功。后者实际上制作了一个非常小的表格

JPanel panel = new JPanel(new GridBagLayout());
    GridBagConstraints constraints = new GridBagConstraints();
    constraints.gridx = 0;
    constraints.gridy = 0;
    constraints.insets = new Insets(0, 0, 25, 15); 
String[] columnNames = {"A", "B", "C", "D", "E"};
        Object[][] data = new Object[20][columnNames.length];
        for( int i = 0; i < 20; i++ ){
            data[i] = new Object[]{"Some other stuff that is long", "K", "1234567891011121314", "R", "T"};
        }

        JTable skillTable = new JTable(data, columnNames);
        skillTable.setFillsViewportHeight(true );
        JScrollPane scrollTable = new JScrollPane(skillTable);
        constraints.fill = constraints.HORIZONTAL;
        panel.add(scrollTable, constraints);
JPanel panel=newjpanel(newgridbagloayout());
GridBagConstraints=新的GridBagConstraints();
constraints.gridx=0;
constraints.gridy=0;
constraints.insets=新的insets(0,0,25,15);
String[]columnNames={“A”、“B”、“C”、“D”、“E”};
Object[][]数据=新对象[20][columnNames.length];
对于(int i=0;i<20;i++){
数据[i]=新对象[]{“其他一些长的东西”,“K”,“123456789101121314”,“R”,“T”};
}
JTable skillTable=新的JTable(数据、列名);
可熟练操作。设置填充视图八(真);
JScrollPane scrollTable=新的JScrollPane(skillTable);
constraints.fill=constraints.HORIZONTAL;
添加(滚动表、约束);
这就是它看起来的样子:

使用整洁和简单

 JPanel panel = new JPanel(new BorderLayout());
    String[] columnNames = {"A", "B", "C", "D", "E"};
    Object[][] data = new Object[20][columnNames.length];
    for (int i = 0; i < 20; i++) {
        data[i] = new Object[]{"Some other stuff that is long", "K", "1234567891011121314", "R", "T"};
    }

    JTable skillTable = new JTable(data, columnNames);
    skillTable.setFillsViewportHeight(true);
    JScrollPane scrollTable = new JScrollPane(skillTable);
    panel.add(scrollTable, BorderLayout.CENTER);

    //as you said you want to add a button as well
    JPanel buttonpanel=new JPanel();
    buttonpanel.add(new JButton("Test"));
    panel.add(buttonpanel,BorderLayout.SOUTH);
JPanel panel=newjpanel(newborderlayout());
String[]columnNames={“A”、“B”、“C”、“D”、“E”};
Object[][]数据=新对象[20][columnNames.length];
对于(int i=0;i<20;i++){
数据[i]=新对象[]{“其他一些长的东西”,“K”,“123456789101121314”,“R”,“T”};
}
JTable skillTable=新的JTable(数据、列名);
可熟练操作。设置填充视图八(真);
JScrollPane scrollTable=新的JScrollPane(skillTable);
panel.add(滚动表、BorderLayout.CENTER);
//正如您所说,您还想添加一个按钮
JPanel buttonpanel=新的JPanel();
添加(新的JButton(“测试”));
面板。添加(按钮面板,边界布局。南);

是否需要使用
GridBagLayout
?为什么不直接使用
网格布局
?执行
new GridLayout()
将导致表格占据整个面板。正在向面板添加哪些其他组件?你能简单地使用一个边框布局并将滚动表放在中间吗?面板中只有另一个按钮。我想我将使用GridLayout为表添加一个额外的面板。感谢您的帮助。GridBagConstraints.fill=GridBagConstraints.HORIZONTAL;,但是为了使用JScrollPane和JPanelI的BorderLayout,也尝试了水平布局,但没有成功。非常好。非常感谢。