Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JScrollPane未显示在JTable上_Java_Swing_Jtable - Fatal编程技术网

Java JScrollPane未显示在JTable上

Java JScrollPane未显示在JTable上,java,swing,jtable,Java,Swing,Jtable,我正试图让JScrollPane出现在我的JTable上。当我创建组件的实例时,我将表传递给了scrollpane。但毫无用处,它还没有出现在我的桌子上 table = new JTable(); scrollPane = new JScrollPane(table); table.setPreferredSize(new Dimension(200,100)); 我不知道如何解决这个问题,我似乎找不到一个会导致它失败的问题。下面是GUI代码的其余部分。它很长。将jtable添加到jpa

我正试图让JScrollPane出现在我的JTable上。当我创建组件的实例时,我将表传递给了scrollpane。但毫无用处,它还没有出现在我的桌子上

 table = new JTable();
 scrollPane = new JScrollPane(table);
 table.setPreferredSize(new Dimension(200,100));
我不知道如何解决这个问题,我似乎找不到一个会导致它失败的问题。下面是GUI代码的其余部分。它很长。将jtable添加到jpanel从第152行开始

  /*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package javasql;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GraphicsConfiguration;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.event.ActionEvent;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author KJ4CC
 */
public class UserInterface implements ActionListener {

    DefaultTableModel dtm = new DefaultTableModel(0, 0);

    public UserInterface() {
        startGui();
    }
    JFrame frame = new JFrame();
    Javasql sql = new Javasql();
    JPanel buttom = new JPanel(new GridBagLayout());
    JPanel commandPane = new JPanel(new GridBagLayout());
    JPanel top = new JPanel(new GridBagLayout());
    JPanel buttons = new JPanel(new GridBagLayout());
    JPanel label = new JPanel(new GridBagLayout());

    JButton connect = new JButton("Connect To Database");
    JButton clr = new JButton("Clear Command");
    JButton exeSql = new JButton("Execute SQL Command");
    JButton clrRes = new JButton("Clear Result Window");

    JLabel infoLabel = new JLabel("Enter Database Information ");
    JLabel driverLabel = new JLabel("JDBC Driver: ");
    JLabel dbLabel = new JLabel("Database URL: ");
    JLabel userLabel = new JLabel("Username:  ");
    JLabel passLabel = new JLabel("Password: ");
    JLabel sqlLabel = new JLabel("Enter SQL Command: ");
    JLabel connectionLabel = new JLabel("No Connection Now ");
    JLabel exeLabel = new JLabel("SQL Execution Result: ");
    //creating an instance of the new table
    public JTable table;
    public JScrollPane scrollPane;

    JComboBox driverSelect = new JComboBox();
    JComboBox url = new JComboBox();

    JTextField username = new JTextField();
    JTextField pass = new JTextField();
    JTextArea command = new JTextArea(1, 1);

    public void startGui() {
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        GridBagConstraints c = new GridBagConstraints();
        System.out.println("sdf");
        c.insets = new Insets(0, 0, 0, 10);
        c.fill = 0;
        c.weightx = 1;
        //adding all of the compoenets to their panel and then to the frame.
        c.gridx = 0;
        c.gridy = 0;
        c.fill = GridBagConstraints.HORIZONTAL;
        top.add(infoLabel, c);
        c.gridx = 0;
        c.gridy = 1;
        top.add(driverLabel, c);
        c.gridx = 1;
        c.gridy = 1;
        c.ipadx = 150;

        c.fill = GridBagConstraints.HORIZONTAL;
        top.add(driverSelect, c);
        c.gridx = 0;
        c.gridy = 2;
        c.fill = 0;

        top.add(dbLabel, c);
        c.gridx = 1;
        c.gridy = 2;
        c.fill = GridBagConstraints.HORIZONTAL;
        top.add(url, c);
        c.gridx = 0;
        c.gridy = 3;
        c.fill = 0;
        c.fill = 0;
        top.add(userLabel, c);
        c.gridx = 1;
        c.gridy = 3;
        c.fill = GridBagConstraints.HORIZONTAL;
        top.add(username, c);
        c.gridx = 0;
        c.gridy = 4;
        c.fill = 0;
        c.fill = 0;
        top.add(passLabel, c);
        c.gridx = 1;
        c.gridy = 4;
        c.fill = GridBagConstraints.HORIZONTAL;
        top.add(pass, c);
        //add the driver and url to the comboboxes
        c.gridx = 2;
        c.gridy = 0;
        commandPane.add(sqlLabel, c);
        c.gridx = 2;
        c.gridy = 1;
        c.ipadx = 150;
        c.ipady = 75;       //sql text area for command 
        c.fill = GridBagConstraints.FIRST_LINE_END;
        c.fill = GridBagConstraints.HORIZONTAL;
        commandPane.add(command, c);

        c.insets = new Insets(0, 0, 0, 20);

        c.ipadx = 9;
        c.ipady = 1;
        c.gridx = 0;
        c.gridy = 0;
        //buttons
        label.add(connectionLabel, c);
        c.gridx = 1;
        c.gridy = 0;
        //c.insets = new Insets(0, 0, 0, 50);

        buttons.add(connect, c);
        connect.addActionListener(this);
        c.gridx = 2;
        buttons.add(clr, c);
        clr.addActionListener(this);
        c.gridx = 3;
        buttons.add(exeSql, c);
        exeSql.addActionListener(this);
        //adding the label and buttons above and below the tabel. 
        c.gridx = 0;
        c.gridy = 1;
        buttom.add(exeLabel, c);
        c.gridx = 0;
        c.gridy = 2;
        //-----------------------------------------------------------------Table here 
        table = new JTable();
        scrollPane = new JScrollPane(table);
        table.setPreferredSize(new Dimension(200, 100));
        c.fill = GridBagConstraints.HORIZONTAL;
        buttom.add(table, c);
        buttom.add(scrollPane);
        c.gridx = 0;
        c.gridy = 3;
        buttom.add(clrRes, c);

        c.weightx = 2;
        c.weighty = 2;
        c.gridx = 0;
        c.gridy = 0;
        frame.setLayout(new GridLayout(3, 2));
        frame.add(top);
        c.gridx = 2;
        c.gridy = 1;
        frame.add(commandPane);
        frame.add(label);
        frame.add(buttons);

        frame.add(buttom, BorderLayout.SOUTH);

        //adding the content panel to the jframe. 
        frame.pack();
        frame.setSize(1000, 550);
        frame.setVisible(true);
        //adding items to both of the combo boxes. 
        driverSelect.addItem("com.mysql.jdbc.Driver");
        url.addItem("jdbc:mysql://localhost:3306/project3");

    }

    public void actionPerformed(ActionEvent e) {

        if (e.getSource() == connect) {

            sql.connect(this);
        } else if (e.getSource() == clr) {
            command.setText("");

        } else if (e.getSource() == exeSql) {
            sql.exeCommand(this);

        }
    }

}
在这里,您可以添加两次表,直接添加到第一行,并(隐式地)与滚动窗格一起添加到最后一行

在Swing中,这是不可能的。因此,当您直接将JTable添加到
底部的
面板时,会在第一行从滚动窗格中删除JTable,然后在最后一行添加一个空滚动窗格,删除先前添加的JTable

只需删除第一行

在这里,您可以添加两次表,直接添加到第一行,并(隐式地)与滚动窗格一起添加到最后一行

在Swing中,这是不可能的。因此,当您直接将JTable添加到
底部的
面板时,会在第一行从滚动窗格中删除JTable,然后在最后一行添加一个空滚动窗格,删除先前添加的JTable


只需删除第一行。

不能添加两次表格:

    table = new JTable();
    scrollPane = new JScrollPane(table);   //here
    table.setPreferredSize(new Dimension(200, 100));
    c.fill = GridBagConstraints.HORIZONTAL;
    buttom.add(table, c);                  //here
    buttom.add(scrollPane);
如果将其添加到滚动窗格,只需添加滚动窗格即可。组件不能有两个父级

我没有检查您的完整代码,但请尝试

    buttom.add(scrollPane,c);
而不是这个

    buttom.add(table, c);                  //here
    buttom.add(scrollPane);

不能添加表两次:

    table = new JTable();
    scrollPane = new JScrollPane(table);   //here
    table.setPreferredSize(new Dimension(200, 100));
    c.fill = GridBagConstraints.HORIZONTAL;
    buttom.add(table, c);                  //here
    buttom.add(scrollPane);
如果将其添加到滚动窗格,只需添加滚动窗格即可。组件不能有两个父级

我没有检查您的完整代码,但请尝试

    buttom.add(scrollPane,c);
而不是这个

    buttom.add(table, c);                  //here
    buttom.add(scrollPane);

好的,这起作用了。我删除了buttom.add(table,c)并将其替换为scrollpane添加,它可以工作!并将其替换为滚动窗格添加内容“我从代码中复制的最后一行中已经有了它。好的,这很有效。”。我删除了buttom.add(table,c)并将其替换为scrollpane添加,它可以工作!并将其替换为滚动窗格添加内容“我从代码中复制的最后一行中已经有了它。