在面板内安装JTable

Ale*_*sky 11 java swing jtable

我正在使用JTable并将其添加到使用gridbaglayout的面板中,如下所示:

JTable qdbs = new JTable(rowData, columnNamesVector);
qdbs.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);

panel.add(qdbs, c);
Run Code Online (Sandbox Code Playgroud)

我不希望表格在滚动窗格中,但我希望表格占据面板的整个宽度.我怎么做到这一点?

根据要求提供SSCCE:

import javax.swing.*;
import java.awt.*;

public class Main{

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

    public static class TestFrame extends JFrame{
    public TestFrame() {
        this.setTitle("SSCCE");

        JPanel panel = new JPanel();
        panel.setLayout(new GridBagLayout());

        GridBagConstraints c = new GridBagConstraints();

        c.gridx = 0;
        c.gridy = 0;

        c.insets = new Insets(10,10,10,10);
        JTable testTable = new JTable(10,2);
        panel.add(testTable, c);

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

}
Run Code Online (Sandbox Code Playgroud)

我希望这个表总是占据面板的整个宽度(插图除外).目前,在调整帧大小时,表不会更改大小.

jzd*_*jzd 12

您需要添加约束来告诉布局如何处理更多空间.在您的SSCCE中添加以下项目:

  c.fill = GridBagConstraints.BOTH;
  c.weightx = 1;
  c.weighty = 0;
Run Code Online (Sandbox Code Playgroud)


cam*_*ckr 5

import java.awt.*;
import javax.swing.*;

public class Test
{
    public static void main(String args[]) throws Exception
    {
        JPanel panel = new JPanel( new GridBagLayout() );
        JTable table = new JTable(5, 5);
        GridBagConstraints gbc = new GridBagConstraints();
        gbc.weightx = 1.0;
        gbc.fill = GridBagConstraints.HORIZONTAL;
        panel.add(table, gbc);

        JFrame frame = new JFrame();
        frame.add(panel, BorderLayout.CENTER);
        frame.pack();
        frame.setVisible(true);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果您需要更多帮助,请发布证明问题的SSCCE.