0

我在 youtube 上练习教程。在这里-> http://www.youtube.com/watch?v=QdbKQ5h9yZg&list=PL70BFBF88CE38C556

我检查了几十次下面的代码。但我仍然不明白为什么 JFrame 没有正确显示。虽然我把尺寸设置为 600x400(或大于),但是当我运行项目时仍然没有任何变化,JFrame尺寸没有改变,标签也没有显示。问题出在哪里?

这是我的代码:

package doanjava;
import java.sql.*;

public class db {

    Connection con;
    Statement st;
    ResultSet rs;

    public db(){
        connect();
    }

    public void connect(){
        try{
            String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
            Class.forName(driver);

            String db = "jdbc:odbc:ketnoi";
            con = DriverManager.getConnection(db);
            st = con.createStatement();
            String sql = "select * from HoSoSinhVien";
            rs = st.executeQuery(sql);

            while(rs.next())
            {
                String Ho = rs.getString("Ho");
                String Ten = rs.getString("Ten");
                String Tuoi = rs.getString("Tuoi");
                String Lop = rs.getString("Lop");
                String SoDienThoai = rs.getString("SoDienThoai");
                String DiaChi = rs.getString("DiaChi");

                System.out.println(Ho+" "+Ten+" | "+"Tuoi: "+Tuoi+" | "+"Lop :"+Lop+" | "+"SDT: "+SoDienThoai+" | "+"Dia Chi: "+DiaChi);
            }
        }catch(Exception ex){
        }
    }

    public static void main(String[] args) {
       new db();
       new gui();
    }
}

package doanjava;
import javax.swing.*;

public class gui {

    JFrame f;
    JLabel Ho;
    JLabel Ten;
    JLabel Tuoi;
    JLabel Lop;
    JTextField t;
    JTextField t1;
    JTextField t2;
    JTextField t3;

    public gui(){
        frame();
    }

    public void frame(){
       f = new JFrame();
       f.setVisible(true);
       f.setSize(600,400);
       f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       Ho = new JLabel("Ho");
       Ten = new JLabel("Ten");
       Tuoi = new JLabel("Tuoi");
       Lop = new JLabel("Lop");

       t = new JTextField(10);
       t1 = new JTextField(10);
       t2 = new JTextField(10);
       t3 = new JTextField(10);

       JPanel p = new JPanel();
       p.add(Ho);
       p.add(t);
       p.add(Ten);
       p.add(t1);
       p.add(Tuoi);
       p.add(t2);
       p.add(Lop);
       p.add(t3);

       f.add(p);
    }
}
4

2 回答 2

1
String Ho = rs.getString("Ho");  

超出System.out.println();这些值将被丢弃,并且对JLabel

Ho = new JLabel("Ho");
  1. 不要设置顶级容器的大小。而是布局内容并调用pack()
  2. Swing GUI 应该在 EDT 上启动和更新。
  3. 请了解类、方法和属性名称的常见Java 命名约定(特别是名称的大小写)并一致地使用它们。
  4. 为了尽快获得更好的帮助,请发布SSCCE
  5. 更改表格代码:

 catch (Exception e) { 
    ..

至:

catch (Exception e) { 
    e.printStackTrace(); // very informative! ..
于 2013-06-22T23:39:52.693 回答
0

您必须setVisible在添加后调用components

JFrame f = new JFrame();

//set properties

//add other components     


f.setVisible(true); //finally
于 2013-06-22T23:18:01.940 回答