我无法弄明白,当我在另一台计算机上运行我的程序时,3个JScrollPane以垂直顺序(北,中,南)放置在JFrame内部,相互重叠使表格不可读 这是3个JscrollPane中的1个代码。
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setVisible(true);
DefaultTableModel mod1 = new DefaultTableModel(col,0) {
public boolean isCellEditable(int row,int column) {
if(column==0 || column==1 || column==2 || column==3 || column==4 || column==5) {
return false;
}else {
return true;
}
}
};
JTable giorno1 = new JTable(mod1);
giorno1.setFont(new Font("Arial",0,15));
giorno1.setRowHeight(20);
giorno1.setAutoCreateRowSorter(true);
JScrollPane scroll1= new JScrollPane(giorno1);
scroll1.setBorder(BorderFactory.createTitledBorder(BorderFactory.createEtchedBorder(),
"Giorno1",TitledBorder.CENTER,
TitledBorder.TOP));
当我把它们分别作为JFrame时的部分
frame.add(scroll1, BorderLayout.NORTH);
frame.add(scroll2, BorderLayout.CENTER);
frame.add(scroll3, BorderLayout.SOUTH);
frame.validate();
非常感谢任何帮助
答案 0 :(得分:0)
不要将ScrollPanes直接添加到JFrame。
首先,您需要将LayoutManager(在您的情况下为BorderLayout)设置为JFrame的Container。然后,您可以将ScrollPanes添加到该Container。
如果您创建一个Background JPanel并将其添加到容器中,那将会更加漂亮。这应该看起来像这样:
JPanel backgroundPane = new JPanel(new BorderLayout());
backgroundPane.add(scrollPane1, BorderLayout.NORTH);
frame.getContentPane().add(backgroundPane);
编辑:我还注意到在添加面板之前使用了frame.setVisible(true)。添加面板后使用此方法,因为这也可能导致问题。