我正在尝试制作我的第一个swing应用程序并且存在一个我无法弄明白的问题。我希望其中的JTabbedPane
和JTable
与其所在的Jpanel
的宽度一致。另外,我想让我的标签只在一行中。是否有任何方法用于设置选项卡的布局?
你可以看到下面的图片。
这是我用于表格面板的代码:
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);
}
}
答案 0 :(得分:2)
问题不在JTabbedPane
或JScrollPane
或JTable
,问题在于您的GradesInfo
JPanel
。
JPanel
使用FlowLayout
,以尊重添加到其中的组件的preferredSize
。
相反,请将GradesInfo
面板的布局设置为BorderLayout
要更改标签的布局方式,请参阅JTabbedPane#setTabLayoutPolicy
您可能希望使用JTabbedPane.SCROLL_TAB_LAYOUT