如何在同一帧中显示JTable值?

时间:2015-06-01 20:34:51

标签: java swing jdbc jtable

我是java swing框架的新手,我遇到了一个问题,我想在Jtable中显示我的数据库值,Jtable应该在我使用JTree的同一帧中打印值,我已经写了一个代码但它在新的JFrame中打开JTable而不是现有的框架。 我有4节课 1:大型机 2:App(主要班级) 3:工具栏 4:TextPanel 我附上了所有课程的代码,请在这方面帮助我,

    public class App {

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {
                try {
                    MainFrame m = new MainFrame();
                } catch (ClassNotFoundException e) {                        
                    e.printStackTrace();
                } catch (SQLException e) {                      
                    e.printStackTrace();
                }
            }
        });
    }

    public class MainFrame extends JFrame {
    JFrame frame1  = new JFrame("Database Search Result");
    private JButton btn;
    String[] columnNames = {"id", "state", "ip", "subnet","gateway","country"};

    private TextPanel textPanel;
    private Toolbar toolbar;
    Connection conn;
    Statement st;
    ResultSet rs;
    static JTable table;
    String id;
    PreparedStatement pst;

    public MainFrame() throws SQLException, ClassNotFoundException {
        setTitle("Hello World");
        btn = new JButton("Hello");
        btn.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {

                if(e.getActionCommand()=="Hello")
                {                       
                    System.out.println("yo");
                      showTableData();
                }                   
            }
        });         

        Class.forName("com.mysql.jdbc.Driver");
        conn =(Connection)  DriverManager.getConnection("jdbc:mysql://localhost:3306/software", "root", "root");
            System.out.println("successe");         
        st = (Statement) conn.createStatement();
        rs =  (ResultSet) st.executeQuery("select * from software.servers");    
        textPanel = new TextPanel();
        toolbar = new Toolbar();
        toolbar.setTextPanel(textPanel);
        setLayout(new BorderLayout());
        add(toolbar,BorderLayout.NORTH);
        add(btn,BorderLayout.SOUTH);
        add(textPanel,BorderLayout.CENTER);    
        setSize(600, 600);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);         
        setVisible(true);
    }

     public void showTableData() {
            frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame1.setLayout(new BorderLayout());       
            DefaultTableModel model = new DefaultTableModel();
            model.setColumnIdentifiers(columnNames);
            table = new JTable();
            table.setModel(model);
            table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
            table.setFillsViewportHeight(true);
            JScrollPane scroll = new JScrollPane(table);
            scroll.setHorizontalScrollBarPolicy(
                    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
            scroll.setVerticalScrollBarPolicy(
                    JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);

            int id;
            String state = "";
            String ip = "";
            String subnet = "";
            String gateway="";
            String country="";       
            try {
                st = (Statement) conn.createStatement();
                rs =  (ResultSet) st.executeQuery("select * from software.servers");
                int i = 0;
                while (rs.next()) {
                    id = rs.getInt("id");
                    state = rs.getString("state");
                    ip = rs.getString("ip");
                    subnet = rs.getString("subnet");
                    gateway=rs.getString("gateway");
                    country=rs.getString("country");
                    model.addRow(new Object[]{id, state, ip, subnet,gateway,country});
                    i++;
                }
                if (i < 1) {
                    JOptionPane.showMessageDialog(null, "No Record Found", "Error", JOptionPane.ERROR_MESSAGE);
                }
                if (i == 1) {
                    System.out.println(i + " Record Found");
                } else {
                    System.out.println(i + " Records Found");
                }
            } catch (Exception ex) {
                JOptionPane.showMessageDialog(null, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
            }
            frame1.add(scroll);
            frame1.setVisible(true);
            frame1.setSize(400, 600);
        }

    public class TextPanel extends JPanel {

    TextPanel(){    
        tree = new JTree(createTree());
        setLayout(new BorderLayout());          
        add(new JScrollPane(tree),BorderLayout.CENTER);         
    }

    public JTree getTree() {
        return tree;
    }

    public void setTree(JTree tree) {
        this.tree = tree;
    }    

    public DefaultMutableTreeNode createTree(){
        DefaultMutableTreeNode top = new DefaultMutableTreeNode("Servers");         
        DefaultMutableTreeNode node1 = new DefaultMutableTreeNode("USA");
        DefaultMutableTreeNode server1 = new DefaultMutableTreeNode("Boston");
        DefaultMutableTreeNode server2 = new DefaultMutableTreeNode("New York");
        DefaultMutableTreeNode server3 = new DefaultMutableTreeNode("Califiornia");         
        node1.add(server1); node1.add(server2); node1.add(server3);
        DefaultMutableTreeNode node2 = new DefaultMutableTreeNode("UK");            
        DefaultMutableTreeNode server4 = new DefaultMutableTreeNode("Warwick");
        DefaultMutableTreeNode server5 = new DefaultMutableTreeNode("London");
        DefaultMutableTreeNode server6 = new DefaultMutableTreeNode("Dublin");
        node2.add(server4);node2.add(server5);node2.add(server6);           
        top.add(node1);top.add(node2);
        return top;         
    }

    public class Toolbar extends JPanel implements ActionListener {
    private JButton btn1;
    private JButton btn2;
    private TextPanel panel;

    public Toolbar() {
        btn1= new JButton("one");
        btn2=new JButton("two");
        btn1.addActionListener(this);
        btn2.addActionListener(this);           
        setLayout(new FlowLayout());
        add(btn1);add(btn2);
    }

    public void setTextPanel(TextPanel textPanel) {
        panel = textPanel;          
    }

    @Override
    public void actionPerformed(ActionEvent e) {
    //panel.getTextArea().append("Hello\n");    
    JButton clicked = (JButton) e.getSource();
        if(clicked == btn1){
            System.out.println("Btn1 clicked");
        }else{
            System.out.println("Btn2 clicked");
        }
    }    
}

我项目的截图很少 the actual output

The required output

0 个答案:

没有答案