我在YouTube上练习教程。它在这里 - >http://www.youtube.com/watch?v=QdbKQ5h9yZg&list=PL70BFBF88CE38C556JFrame显示不正确
我检查了几十次以下的代码。但我仍不明白为什么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);
}
}
你需要的组件你意识到之前添加到容器(即使其可见)。 – mre
或者调用'JFrame#revalidate','JFrame#repaint' - 但是mre的建议更好 – MadProgrammer
1)不要设置顶级容器的大小。而是布置内容并调用'pack()'。 2)请学习常见的[Java命名约定](http://java.sun.com/docs/books/jls/second_edition/html/names.doc.html#73307)(具体用于名称的情况) ,方法和属性名称并一致使用它们。 3)将catch(Exception e){..']形式的代码更改为catch(Exception e){e.printStackTrace(); //非常翔实! ..' –