java - 如何在 JFrame 上显示 JTable
问题描述
我在网上花了几个小时,恐怕我不太清楚如何让我的 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);
}
}
我的所有代码都按预期运行,除了没有桌子,我也尝试了很多不起作用的东西,所以这基本上是我开始的地方,这样它就不会被大量不正确的东西所拥挤
解决方案
你有几个问题。首先,默认情况下,JFrame 使用 BorderLayout。使用默认的 add(component) 方法将该组件放置在中心。再次使用相同的 add() 方法只是替换中心的新组件。
其次,在创建整个 GUI 之前,不要打包或设置可见的框架。
您最好创建一个 JPanel 并将组件添加到该面板,然后将该面板添加到框架中。JPanel 的默认布局管理器是 FlowLayout。
推荐阅读
- mysql - 如何安装mysql以非root身份运行
- ios - TabBarController 图标在单击之前不显示 - 没有情节提要
- javascript - 如何修改公式以在我的代码中包含另一个元素输入?
- javascript - Highstock 在 yAxis 上显示多个系列,比例错误,因此线条随机堆叠
- node.js - 使用 [preauth] 在服务器上断开节点 typescript ssh2 连接
- r - (R) - Heatmap.2 的 Colorkey 在 PDF 中加载时间过长
- c# - 为什么使用 1024 作为缓冲区?
- c# - 尝试将数据按日期过滤到 DataGridView 时出现无效的强制转换异常
- mongodb - 将 Spring-Shell 与 MongoDb 驱动程序集成
- c# - 我的“+”运算符在我的固定更新中不明确