JTable, связанный с SQL, не может увидеть результат в затмении - PullRequest
0 голосов
/ 04 ноября 2018

Итак, вот моя проблема: все работает нормально, я просто не могу увидеть результат (я попробовал System.out.print ("done") в методе показа, и все работало нормально, просто таблица не показывает мне результат, какая-либо помощь и спасибо вот мои коды я думаю, что у меня есть проблема с таблицей, мне нужно что-то изменить на нем? PS: метод Adding работает, поэтому проблема с таблицей и другим методом, может быть!

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

1 Ответ

0 голосов
/ 04 ноября 2018

Стоп, иди читать Как использовать таблицы . Фактически, пока вы занимаетесь этим, прочитайте Визуальное руководство по менеджерам компоновки и Создание графического интерфейса пользователя также с 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, это вызовет сильную головную боль, когда ваш пользовательский интерфейс станет более сложным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...