Java 对于(int j=0;j
让我们从所有让我抓狂的事情开始Java 对于(int j=0;j,java,swing,jtable,jscrollpane,Java,Swing,Jtable,Jscrollpane,让我们从所有让我抓狂的事情开始 // This will come back and haunt you... contentPane.setLayout(null); table = new JTable(); // You should leave this up to the layout manager, but you're not using one, so... table.setBounds(100, 136, 810, 431); 现在的问题是 表应该比可用的可视区域更大,
// This will come back and haunt you...
contentPane.setLayout(null);
table = new JTable();
// You should leave this up to the layout manager, but you're not using one, so...
table.setBounds(100, 136, 810, 431);
现在的问题是
表应该比可用的可视区域更大,这样做
contentPane.add(table);
这不是它的工作原理
您需要使用JScrollPane
。这为要显示的标题提供了区域
contentPane.add(new JScrollPane(table));
退房
最终,您需要熟悉,因为从数据库读取结果可能是一项长期运行的任务,导致应用程序暂停
使用示例更新
我还检查了你的数据重审代码并“清理了”,这相当有趣
public Report1() {
setTitle("Report");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 953, 616);
((JComponent) getContentPane()).setBorder(new EmptyBorder(5, 5, 5, 5));
table = new JTable();
add(new JScrollPane(table));
JButton btnNewButton = new JButton("Add");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
PreparedStatement pr = null;
ResultSet rs = null;
Statement stmt = null;
try {
NewPatient.con = DbConnPa.getConObj();
String sql = "SELECT COUNT (*) FROM newpatient1";
pr = NewPatient.con.prepareStatement(sql);
rs = pr.executeQuery(sql);
if (rs.next()) {
int count = 0;
count = rs.getInt(1);
System.out.println(count);
rs.close();
data = new Object[count][6];
stmt = NewPatient.con.createStatement();
String sql1 = "SELECT * FROM newpatient1";
Object[] columns = {"FirstName", "LastName", "Age", "RefDoctor", "Sex", "RegId"};
rs = stmt.executeQuery(sql1);
while (rs.next()) {
for (int j = 0; j < 6; j++) {
data[k][j] = rs1.getString(j + 1);
System.out.println("i=" + "j=" + j);
}
k++;
}
}
table.setModel(new DefaultTableModel(data, columns));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
rs.close();
} catch (Exception e) {
}
try {
pr.close();
} catch (Exception e) {
}
try {
stmt.close();
} catch (Exception e) {
}
}
}
});
add(btnNewButton, BorderLayout.SOUTH);
}
public Report1(){
标题(“报告”);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
立根(100100953616);
((JComponent)getContentPane()).setOrder(新的EmptyOrder(5,5,5,5));
table=新的JTable();
添加(新JScrollPane(表));
JButton btnNewButton=新JButton(“添加”);
addActionListener(新ActionListener(){
已执行的公共无效操作(操作事件arg0){
PreparedStatement pr=null;
结果集rs=null;
语句stmt=null;
试一试{
NewPatient.con=DbConnPa.getConObj();
String sql=“从newpatient1中选择计数(*)”;
pr=NewPatient.con.prepareStatement(sql);
rs=pr.executeQuery(sql);
如果(rs.next()){
整数计数=0;
计数=rs.getInt(1);
系统输出打印项次(计数);
rs.close();
数据=新对象[计数][6];
stmt=NewPatient.con.createStatement();
字符串sql1=“从newpatient1中选择*”;
Object[]列={“FirstName”、“LastName”、“Age”、“RefDoctor”、“Sex”、“RegId”};
rs=stmt.executeQuery(sql1);
while(rs.next()){
对于(int j=0;j<6;j++){
数据[k][j]=rs1.getString(j+1);
System.out.println(“i=“+”j=“+j”);
}
k++;
}
}
table.setModel(新的DefaultTableModel(数据、列));
}捕获(SQLE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}最后{
试一试{
rs.close();
}捕获(例外e){
}
试一试{
pr.close();
}捕获(例外e){
}
试一试{
stmt.close();
}捕获(例外e){
}
}
}
});
添加(BtnewButton,BorderLayout.SOUTH);
}
contentPane.setLayout(空);table=新的JTable();表1.立根(100136810431);这些代码行是由eclipse的拖放插件自动生成的。我已经完成了那个教程,但仍然没有为我工作。建议我进行更改,这样它就会显示列名称我应该在哪里添加代码行contentPane.add(new JScrollPane(table))?我的意思是说,在发布问题之前,我已经搜索了这些东西。当我听不懂的时候,我在这里发了帖子。我相信你的话,这么多人发帖提问,你看了教程,30秒后他们仍然不明白:如果你知道post answer.contentPane.setLayout(null),我来这里寻求帮助;table=新的JTable();表1.立根(100136810431);这些代码行是由eclipse的拖放插件自动生成的。我已经完成了那个教程,但仍然没有为我工作。建议我进行更改,这样它就会显示列名称我应该在哪里添加代码行contentPane.add(new JScrollPane(table))?我的意思是说,在发布问题之前,我已经搜索了这些东西。当我听不懂的时候,我在这里发了帖子。我相信你的话,这么多人都在发帖提问,你看了教程,30秒后他们仍然不明白:如果你知道帖子的答案,我来这里寻求帮助。
public Report1() {
setTitle("Report");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 953, 616);
((JComponent) getContentPane()).setBorder(new EmptyBorder(5, 5, 5, 5));
table = new JTable();
add(new JScrollPane(table));
JButton btnNewButton = new JButton("Add");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
PreparedStatement pr = null;
ResultSet rs = null;
Statement stmt = null;
try {
NewPatient.con = DbConnPa.getConObj();
String sql = "SELECT COUNT (*) FROM newpatient1";
pr = NewPatient.con.prepareStatement(sql);
rs = pr.executeQuery(sql);
if (rs.next()) {
int count = 0;
count = rs.getInt(1);
System.out.println(count);
rs.close();
data = new Object[count][6];
stmt = NewPatient.con.createStatement();
String sql1 = "SELECT * FROM newpatient1";
Object[] columns = {"FirstName", "LastName", "Age", "RefDoctor", "Sex", "RegId"};
rs = stmt.executeQuery(sql1);
while (rs.next()) {
for (int j = 0; j < 6; j++) {
data[k][j] = rs1.getString(j + 1);
System.out.println("i=" + "j=" + j);
}
k++;
}
}
table.setModel(new DefaultTableModel(data, columns));
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
try {
rs.close();
} catch (Exception e) {
}
try {
pr.close();
} catch (Exception e) {
}
try {
stmt.close();
} catch (Exception e) {
}
}
}
});
add(btnNewButton, BorderLayout.SOUTH);
}