您好,我试图在Java中创建我的第一个表,但是有些信息显示不正确。我正在研究,因为在开始时第一个错误是表格未显示列名,因此我添加了JScrollPane,现在表格完全消失了。
代码如下:
private JTable table;
private String [][] datosFila= {
{"A1","A2","A3"},
{"B1","B2","B3"},
{"C1","C2","C3"}};
private String [] columnas= {"Prueba1","Prueba2","Prueba3"};
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
SelectProfile window = new SelectProfile();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
public SelectProfile( ) {
frame = new JFrame();
frame.setBounds(100, 100, 862, 498);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.getContentPane().setLayout(null);
JLabel lblNewLabel = new JLabel("SELECCIONE PERFIL USUARIO");
lblNewLabel.setToolTipText("");
lblNewLabel.setBounds(115, 23, 755, 110);
lblNewLabel.setBackground(Color.BLACK);
lblNewLabel.setFont(new Font("Dialog", Font.BOLD, 41));
frame.getContentPane().add(lblNewLabel);
table = new JTable(datosFila,columnas);
table.setBackground(SystemColor.control);
table.setShowGrid(false);
frame.getContentPane().add(table);
JScrollPane js = new JScrollPane(table);
frame.getContentPane().add(js);
table.setBounds(215, 146, 345, 259);
感谢您的问候,
答案 0 :(得分:1)
那里有几个问题。
将LayoutManager设置为null会导致一些奇怪的行为。删除它至少可以使元素显示出来。 您可以根据需要删除该行,但我建议您使用基本的LayoutManager(即FlowLayout)
您正在将JTable添加到JFrame和JScrollPane中。您只应将其添加到滚动窗格中。
我测试了以下代码,我认为它可以满足您的要求:
public SelectProfile() {
frame = new JFrame();
frame.setBounds(100, 100, 862, 498);
frame.setPreferredSize(new Dimension(862, 498));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setLocationRelativeTo(null);
frame.getContentPane().setLayout(new FlowLayout());
JLabel lblNewLabel = new JLabel("SELECCIONE PERFIL USUARIO");
lblNewLabel.setToolTipText("");
lblNewLabel.setBounds(115, 23, 755, 110);
lblNewLabel.setBackground(Color.BLACK);
lblNewLabel.setFont(new Font("Dialog", Font.BOLD, 41));
frame.getContentPane().add(lblNewLabel);
table = new JTable(datosFila,columnas);
table.setBackground(SystemColor.control);
table.setShowGrid(false);
table.setBounds(215, 146, 345, 259);
JScrollPane js = new JScrollPane(table);
js.setPreferredSize(new Dimension(800,50));
frame.getContentPane().add(js);
frame.pack();
}
应注意,我已将滚动窗格的首选大小设置为非常小,以便可以看到滚动窗格正在工作。您可能想要删除增加尺寸的那一行。
答案 1 :(得分:0)
每次执行frame.getContentPane()。add();
时,您都将替换内容窗格中的内容。您应该阅读Oraclale的有关布局管理器的教程:https://docs.oracle.com/javase/tutorial/uiswing/layout/layoutlist.html