Я практиковал учебник на 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 (Исключение e) {..' to' catch (Исключение e) {e.printStackTrace(); // очень информативно! ..' –