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

Java 如何在同一帧中显示JTable值?,java,swing,jdbc,jtable,Java,Swing,Jdbc,Jtable,我不熟悉java swing框架,我遇到了一个问题,我想在Jtable中显示数据库中的值,Jtable应该在使用JTree的同一帧中打印这些值,我已经编写了一个代码,但它会在新的JFrame而不是现有帧中打开Jtable。 我有四节课 1:主机 2:应用程序(主类) 3:工具栏 4:文本面板 我附上所有课程的代码,请在这方面帮助我 public class App { public static void main(String[] args) { SwingU

我不熟悉java swing框架,我遇到了一个问题,我想在Jtable中显示数据库中的值,Jtable应该在使用JTree的同一帧中打印这些值,我已经编写了一个代码,但它会在新的JFrame而不是现有帧中打开Jtable。 我有四节课 1:主机 2:应用程序(主类) 3:工具栏 4:文本面板 我附上所有课程的代码,请在这方面帮助我

    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");
        }
    }    
}
公共类应用程序{
公共静态void main(字符串[]args){
SwingUtilities.invokeLater(新的Runnable(){
@凌驾
公开募捐{
试一试{
大型机m=新的大型机();
}catch(classnotfound异常){
e、 printStackTrace();
}捕获(SQLE){
e、 printStackTrace();
}
}
});
}
公共类大型机扩展JFrame{
JFrame frame1=新JFrame(“数据库搜索结果”);
专用按钮btn;
String[]columnNames={“id”、“state”、“ip”、“subnet”、“gateway”、“country”};
私人文本面板文本面板;
专用工具栏;
连接接头;
报表st;
结果集rs;
静态JTable表;
字符串id;
编制报表pst;
公共大型机()抛出SQLException,ClassNotFoundException{
setTitle(“你好世界”);
btn=新的JButton(“你好”);
btn.addActionListener(新ActionListener(){
@凌驾
已执行的公共无效操作(操作事件e){
如果(如getActionCommand()=“你好”)
{                       
System.out.println(“yo”);
showTableData();
}                   
}
});         
Class.forName(“com.mysql.jdbc.Driver”);
conn=(连接)DriverManager.getConnection(“jdbc:mysql://localhost:3306/software“,”根“,”根“);
System.out.println(“成功”);
st=(语句)conn.createStatement();
rs=(ResultSet)st.executeQuery(“从software.servers中选择*);
textPanel=新的textPanel();
工具栏=新工具栏();
工具栏.setTextPanel(textPanel);
setLayout(新的BorderLayout());
添加(工具栏,BorderLayout.NORTH);
添加(btn,BorderLayout.SOUTH);
添加(textPanel,BorderLayout.CENTER);
设置大小(600600);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(真);
}
public void showTableData(){
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setLayout(新的BorderLayout());
DefaultTableModel=新的DefaultTableModel();
model.setColumnIdentifiers(columnNames);
table=新的JTable();
表2.setModel(model);
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
表.setFillsViewPerthweight(真);
JScrollPane scroll=新的JScrollPane(表);
scroll.setHorizontalScrollBarPolicy(
JScrollPane.水平滚动条(根据需要);
scroll.setVerticalScrollBarPolicy(
JScrollPane.垂直滚动条(根据需要);
int-id;
字符串状态=”;
字符串ip=“”;
字符串子网=”;
字符串网关=”;
字符串country=“”;
试一试{
st=(语句)conn.createStatement();
rs=(ResultSet)st.executeQuery(“从software.servers中选择*);
int i=0;
while(rs.next()){
id=rs.getInt(“id”);
state=rs.getString(“state”);
ip=rs.getString(“ip”);
子网=rs.getString(“子网”);
网关=rs.getString(“网关”);
国家=rs.getString(“国家”);
addRow(新对象[]{id,state,ip,subnet,gateway,country});
i++;
}
if(i<1){
showMessageDialog(null,“未找到记录”,“错误”,JOptionPane.Error\u消息);
}
如果(i==1){
System.out.println(i+“找到记录”);
}否则{
System.out.println(i+“找到记录”);
}
}捕获(例外情况除外){
showMessageDialog(null,例如getMessage(),“Error”,JOptionPane.Error_MESSAGE);
}
frame1.添加(滚动);
frame1.setVisible(true);
框架1.设置大小(400600);
}
公共类TextPanel扩展了JPanel{
TextPanel(){
tree=newjtree(createTree());
setLayout(新的BorderLayout());
添加(新的JScrollPane(树),BorderLayout.CENTER);
}
公共JTree getTree(){
回归树;
}
公共无效集合树(JTree树){
this.tree=树;
}    
公共DefaultMutableTreeNode createTree(){
DefaultMutableTreeNode top=新的DefaultMutableTreeNode(“服务器”);
DefaultMutableTreeNode1=新的DefaultMutableTreeNode(“美国”);
DefaultMutableTreeNode服务器1=新的DefaultMutableTreeNode(“波士顿”);
DefaultMutableTreeNode服务器2=新的DefaultMutableTreeNode(“纽约”);
DefaultMutableTreeNode服务器3=新的DefaultMutableTreeNode(“加利福尼亚”);
node1.add(服务器1);node1.add(服务器2);node1.add(服务器3);
DefaultMutableTreeNode2=新的DefaultMutableTreeNode(“英国”);
DefaultMutableTreeNode服务器4=新的DefaultMutableTreeNode(“Warwick”);
DefaultMutableTreeNode服务器5=新的DefaultMutableTreeNode(“伦敦