所以这是我的问题,一切正常,我只是无法在showing方法中看到结果(我尝试了System.out.print(“ done”),并且一切正常,只是表没有向我显示结果任何帮助谢谢,这是我的代码 我认为桌子有问题,我需要在桌子上做些改变吗? PS:添加方法起作用,所以问题出在表和其他方法上!
public class Window extends JPanel{
JButton Reload = new JButton("Realod");
JButton Valider = new JButton("ADD");
Label label = new Label("Item : ");
JTextField TFname = new JTextField();
JTable table = new JTable();
private Connection con=null;
private PreparedStatement pst = null;
public Window() throws SQLException {
this.setLayout(null);
this.add(table);
this.add(Valider);
this.add(label);
this.add(TFname);
this.add(Reload);
label.setBounds(10,10,80,20);
TFname.setBounds(100, 10, 80,30);
Valider.setBounds(100, 40, 80,30);
Reload.setBounds(160,150, 80,30);
label.setFont(new Font("ARIAL",2,26));
table.setBounds(50,190,300,250);
con = Driver.connect();
Adding();
Showing();
}
private void Adding() throws SQLException {
Valider.addActionListener(S->{
if(!TFname.getText().isEmpty()) {
String requette = "insert into Test(Nom)Values(?)";
String Name = TFname.getText();
try {
pst=con.prepareStatement(requette);
pst.setString(1, Name);
int i = pst.executeUpdate();
if(i==1) {
System.out.println("ADDIND IS DONE");
}else {
System.out.println("Error in ADDING");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
try {
pst.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}else {
System.out.println("ALL FIELD MUST BE FIELED");
}
});
}
public ArrayList<User>userList() throws SQLException{
ArrayList<User>userList = new ArrayList<>();
String query="Select * from Test";
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(query);
User user;
while(rs.next()) {
user=new User(rs.getString("Nom"));
userList.add(user);
}
return userList;
}
public void Showing() throws SQLException {
Reload.addActionListener(e->{
ArrayList<User> list;
try {
list = userList();
DefaultTableModel model = (DefaultTableModel) table.getModel();
Object[] row = new Object[1];
for(int i=0;i<list.size();i++) {
row[0]=list.get(i).getName();
model.addRow(row);
答案 0 :(得分:1)
停止,继续阅读How to Use Tables。实际上,当您使用它时,请同时阅读A Visual Guide to Layout Managers和Creating a GUI With JFC/Swing。因此,SO不能替代好的教程,文档和研究。
您的“基本”问题归结为以下事实:JTable
尚未配置为实际显示任何内容(即列)。
因此添加类似...
DefaultTableModel model = new DefaultTableModel(new String[]{"Name"}, 0);
table.setModel(model);
给您的构造函数将解决您的“立即”问题
this.setLayout(null);
不会帮助您,它将使您的生活变得更加艰难。学习使用布局管理器,这是值得花费的时间。
您还应该关闭数据库资源,这是try-with-resources
如此强大的地方
try (Statement st = con.createStatement();
ResultSet rs = st.executeQuery(query)) {
User user;
while (rs.next()) {
user = new User(rs.getString("Nom"));
userList.add(user);
}
}
您还将混合Swing和AWT组件,随着UI变得更加复杂,这将引起巨大的头痛。