我是java的新手。我想在我的GUI中显示一个表。我知道有几个这样的问题,但这对我没有帮助。任何帮助将不胜感激。
Test.java
package test;
import javax.swing.*;
import java.awt.*;
class Test {
JFrame frame;
JTable table;
Container pane;
public void initGUI () {
frame = new JFrame("Table");
frame.setLayout(null);
frame.setVisible(true);
frame.setBounds(100, 100, 500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
pane = frame.getContentPane();
Object[][] rows = {
{"Amir", "Karachi"},
{"Noman", "Quetta"},
{"Salman", "Rawalpindi"}
};
Object[] cols = {"Name", "City"};
table = new JTable(rows, cols);
pane.add(new JScrollPane(table));
}
public static void main (String args[]) {
Test obj = new Test();
obj.initGUI();
}
}
答案 0 :(得分:2)
frame.setLayout(null);
不要使用空布局。
因为您不使用布局管理器,所以滚动窗格的大小为(0,0),因此无需绘制任何内容。
Swing旨在与布局管理器一起使用。保留框架的默认布局管理器为BorderLayout。
此外,在将所有组件添加到框架后,应使框架可见。
阅读How to Use Tables上Swing教程中的部分,了解工作示例以帮助您入门。使用教程中的代码结构,然后对其进行修改。
答案 1 :(得分:0)
frame.setLayout(null);
除外,您可以排除getContentPane();
。这是一个工作:
import javax.swing.*;
import java.awt.*;
class Test {
JFrame frame;
JTable table;
Container pane;
public void initGUI() {
frame = new JFrame("Table");
frame.setVisible(true);
frame.setBounds(100, 100, 500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Object[][] rows = {
{"Amir", "Karachi"},
{"Noman", "Quetta"},
{"Salman", "Rawalpindi"}
};
Object[] cols = {"Name", "City"};
table = new JTable(rows, cols);
frame.add(new JScrollPane(table));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static void main(String args[]) {
Test obj = new Test();
obj.initGUI();
}
}