使用另一种方法

时间:2017-04-06 03:22:47

标签: java swing jtable

我正在使用Eclipse& Swing来创建这个项目。我正在尝试填充JTable。我已经在方法Display_UserInfo_in_JTable()中从数据库中获取了值。

但我不知道如何使用此方法填充我的JTable。我认为该方法应该有一个返回类型,但我不知道我该怎么办?

package view;

import controller.*;
import java.awt.EventQueue;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

public class TableView {

    private JFrame frame;
    private JTable table;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    TableView window = new TableView();
                    window.frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    private ArrayList<UserInfo> UserInfoList()
    {
        try
        {
            UserInfo userinfo;
            ArrayList<UserInfo> UserInfoList = new ArrayList<UserInfo>();
            Connection sqlCon = DB_con.getSQLConnection();
            PreparedStatement ps = sqlCon.prepareStatement("select id,name,username,contact,gender from temp");

            ResultSet rs = ps.executeQuery();
            while(rs.next())
            {
                userinfo = new UserInfo(
                                        rs.getInt("id"),
                                        rs.getString("name"),
                                        rs.getString("username"),
                                        rs.getString("contact"),
                                        rs.getString("gender")
                                        );
                UserInfoList.add(userinfo);
            }
            return UserInfoList;
        }
        catch(Exception ex)
        {
            System.out.println(ex.toString());
            return null;
        }       
    }

    public void Display_UserInfo_in_JTable()
    {
        try
        {
            ArrayList<UserInfo> list = UserInfoList();
            DefaultTableModel dtm = new DefaultTableModel();
            Object row[] = new Object[5];

            for(int i = 0 ; i < list.size(); i++)
            {
                row[0] = list.get(i).getId();
                row[1] = list.get(i).getName();
                row[2] = list.get(i).getUsername();
                row[3] = list.get(i).getContact();
                row[4] = list.get(i).getGender();

                dtm.addRow(row);
            }
            table.setModel(dtm);
        }
        catch(Exception ex)
        {
            System.out.println(ex.toString());
        }
    }

    /**
     * Create the application.
     */
    public TableView() {
        initialize();
        Display_UserInfo_in_JTable();

    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {
        frame = new JFrame();
        frame.setBounds(100, 100, 598, 402);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().setLayout(null);

        JPanel panel = new JPanel();
        panel.setBounds(10, 11, 562, 341);
        frame.getContentPane().add(panel);
        panel.setLayout(null);

        table = new JTable();
        //table.setBounds(49, 163, 92, -97);
        JScrollPane jsp = new JScrollPane(table);
        panel.add(table);
    }
}

我已在方法table.setModel(dtm);中添加了Display_UserInfo_in_JTable(),仍然无法获得结果。

1 个答案:

答案 0 :(得分:2)

您的代码存在太多问题:

  1. 编码和命名惯例
  2. class SecondStage: def __init__(self, winner): pass #here goes some scripts 永远不会被调用(或至少你没有发布该代码)
  3. 表模型不应该以这种方式编码
  4. 没有列标识符,只有行
  5. 您使用了绝对布局(布局设置为null)但界限为负-97 ,这可能是您的主要问题
  6. 对于第5点,要么使用标准布局,要么相应地设置边界。