我已经花了几个小时上网,如果有人能用简单或全面的方法来解释为什么以及如何做,那么我恐怕无法弄清楚如何使我的JTable显示在JFrame上的JButton旁边。解决这个问题,我真的很感激。
广泛的在线研究,包括下载样本和应用各种建议;还向我的老师寻求帮助,但她对Java没有太多经验。
public class canvas extends JTable{
static void displayJFrame(){
//set variables
int i = 0;
String[][] strArray = new String[3][i];
String[] labelArray = new String[3];
labelArray[0] = "Name: ";
labelArray[1] = "Subject: ";
labelArray[2] = "Average: ";
//create JFrame
JFrame f = new JFrame("Test Average");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.getContentPane().setBackground(Color.WHITE);
f.setPreferredSize(new Dimension(600, 600));
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
//create JButton
JButton button=new JButton("Enter New Grade");
button.setBounds(450,15,140, 40);
button.addActionListener(e -> average(strArray, i));//gets info from user and adds to strArray
button.addActionListener(e -> count(i));//increases counter
f.add(button);
//create JTable
JTable j = new JTable(strArray, labelArray);
JScrollPane scrollPane = new JScrollPane(j);
j.setBounds(30, 40, 200, 300);
j.setSize(500, 200);
j.setVisible(true);
}
}
除了没有表之外,我所有的代码都按预期运行,我也尝试了很多不起作用的事情,所以基本上这是我开始的地方,这样就不会被大量不正确的东西拥挤
答案 0 :(得分:1)
您有几个问题。首先,默认情况下,JFrame使用BorderLayout。使用默认的add(component)方法可将该组件置于中心。再次使用相同的add()方法只是替换了位于中心的新组件。
第二,在创建完整个GUI之后,不要打包或设置框架可见。
您最好创建一个JPanel并将组件添加到该面板,然后将该面板添加到框架。 JPanel的默认布局管理器是FlowLayout。