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);
}