如何在JtabbedPane的选项卡中设置Jtable的大小以及如何在JTabbedPane中设置选项卡的布局?

时间:2014-04-09 21:56:56

标签: java swing jtable jscrollpane jtabbedpane

我正在尝试制作我的第一个swing应用程序并且存在一个我无法弄明白的问题。我希望其中的JTabbedPaneJTable与其所在的Jpanel的宽度一致。另外,我想让我的标签只在一行中。是否有任何方法用于设置选项卡的布局? 你可以看到下面的图片。

enter image description here

这是我用于表格面板的代码:

public class GradesInfo extends JPanel {

    public GradesInfo () {
        Dimension size = getPreferredSize();
        size.width = 650;
        setPreferredSize(size);

        setBorder(BorderFactory.createTitledBorder("Grades info"));

        // creating components
        JTabbedPane tabbedPane = new JTabbedPane();

        GradesTableModel tableModel = new GradesTableModel(new String[][] {{"Stephen", "6"}, {"Michael", "5"}});

        JTable table1 = new JTable();
        table1.setModel(tableModel);
        JTable table2 = new JTable();
        table2.setModel(tableModel);
        JTable table3 = new JTable();
        table3.setModel(tableModel);
        JTable table4 = new JTable();
        table4.setModel(tableModel);
        JTable table5 = new JTable();
        table5.setModel(tableModel);
        JTable table6 = new JTable();
        table6.setModel(tableModel);
        JTable table7 = new JTable();
        table7.setModel(tableModel);
        JTable table8 = new JTable();
        table8.setModel(tableModel);

        JScrollPane scr1 = new JScrollPane(table1);
        JScrollPane scr2 = new JScrollPane(table2);
        JScrollPane scr3 = new JScrollPane(table3);
        JScrollPane scr4 = new JScrollPane(table4);
        JScrollPane scr5 = new JScrollPane(table5);
        JScrollPane scr6 = new JScrollPane(table6);
        JScrollPane scr7 = new JScrollPane(table7);
        JScrollPane scr8 = new JScrollPane(table8);


        // adding the components
        tabbedPane.addTab("Semester 1", scr1);
        tabbedPane.addTab("Semester 2", scr2);
        tabbedPane.addTab("Semester 3", scr3);
        tabbedPane.addTab("Semester 4", scr4);
        tabbedPane.addTab("Semester 5", scr5);
        tabbedPane.addTab("Semester 6", scr6);
        tabbedPane.addTab("Semester 7", scr7);
        tabbedPane.addTab("Semester 8", scr8);

        add(tabbedPane);


    }

}

1 个答案:

答案 0 :(得分:2)

问题不在JTabbedPaneJScrollPaneJTable,问题在于您的GradesInfo JPanel

默认情况下,

JPanel使用FlowLayout,以尊重添加到其中的组件的preferredSize

相反,请将GradesInfo面板的布局设置为BorderLayout

要更改标签的布局方式,请参阅JTabbedPane#setTabLayoutPolicy

您可能希望使用JTabbedPane.SCROLL_TAB_LAYOUT