Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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 添加列时出现Jtable问题_Java_Swing - Fatal编程技术网

Java 添加列时出现Jtable问题

Java 添加列时出现Jtable问题,java,swing,Java,Swing,这是一个有点傻的问题,但我正在使用java swing,而且一直做得很好,但我真的无法在我的表单中显示JTable,到目前为止,出现了一个空白方块,但根本没有列,下面是一个片段: DefaultTableModel modelo = new DefaultTableModel(); modelo.setColumnCount(1); tblTrans = new JTable(modelo); modelo.addColumn("Prueba"); tblTrans.revalidate();

这是一个有点傻的问题,但我正在使用java swing,而且一直做得很好,但我真的无法在我的表单中显示JTable,到目前为止,出现了一个空白方块,但根本没有列,下面是一个片段:

DefaultTableModel modelo = new DefaultTableModel();
modelo.setColumnCount(1);
tblTrans = new JTable(modelo);
modelo.addColumn("Prueba");
tblTrans.revalidate();
tblTrans.setBounds(316, 47, 248, 243);
contentPane.add(tblTrans);
以下是完整的代码,以备您需要:

package mx.adk.grafos;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.table.DefaultTableModel;
import javax.swing.DefaultListModel;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.ListSelectionModel;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JList;
import javax.swing.JTable;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.Set;
import java.util.TreeSet;

public class GUI extends JFrame implements ActionListener {

    private JPanel contentPane;
    private JTextField txtEstados;
    private JTextField txtLenguaje;
    private JTextField txtFinal;
    private JTable tblTrans;
    private JList lstEstados;
    private JList lstLenguaje;

    DefaultListModel listaEstados;
    TreeSet<String> setEstados = new TreeSet<String>();

    DefaultListModel listaLenguaje;
    TreeSet<Character> setLenguaje = new TreeSet<Character>();

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

    public void actionPerformed(ActionEvent e) {
        String comando = e.getActionCommand();
        if(comando.equalsIgnoreCase("btnAEstados")){
            String tmp = txtEstados.getText();
            if(setEstados.add(tmp)){
                listaEstados.addElement(tmp);
            }
            return;
        }
        if(comando.equalsIgnoreCase("btneestados")){
            String tmp = (String) lstEstados.getSelectedValue();
            setEstados.remove(tmp);
            listaEstados.removeElement(tmp);
        }
        if(comando.equalsIgnoreCase("btnALenguaje")){
            char tmp = txtLenguaje.getText().charAt(0);
            if(setLenguaje.add(tmp)){
                listaLenguaje.addElement(tmp);
            }
            return;
        }
        if(comando.equalsIgnoreCase("btnelenguaje")){
            char tmp = (char) lstLenguaje.getSelectedValue().toString().charAt(0);
            setLenguaje.remove(tmp);
            listaLenguaje.removeElement(tmp);
        }
    }

    public GUI() {
        setTitle("Automata finito no deterministico");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 599, 368);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        txtEstados = new JTextField();
        txtEstados.setBounds(26, 82, 72, 28);
        contentPane.add(txtEstados);
        txtEstados.setColumns(10);

        JButton btnAEstados = new JButton(">>");
        btnAEstados.setBounds(103, 69, 51, 29);
        contentPane.add(btnAEstados);
        btnAEstados.addActionListener(this);
        btnAEstados.setActionCommand("btnAEstados");

        listaEstados = new DefaultListModel();
        lstEstados = new JList(listaEstados);
        lstEstados.setBounds(154, 46, 105, 109);
        contentPane.add(lstEstados);
        lstEstados.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

        JLabel lblEstados = new JLabel("Estados");
        lblEstados.setBounds(83, 19, 59, 16);
        contentPane.add(lblEstados);

        JButton btnEEstados = new JButton("<<");
        btnEEstados.setBounds(103, 96, 51, 29);
        contentPane.add(btnEEstados);
        btnEEstados.addActionListener(this);
        btnEEstados.setActionCommand("btnEEstados");

        JButton btnELenguaje = new JButton("<<");
        btnELenguaje.setBounds(103, 231, 51, 29);
        contentPane.add(btnELenguaje);
        btnELenguaje.addActionListener(this);
        btnELenguaje.setActionCommand("btnELenguaje");

        JButton btnALenguaje = new JButton(">>");
        btnALenguaje.setBounds(103, 204, 51, 29);
        contentPane.add(btnALenguaje);
        btnALenguaje.addActionListener(this);
        btnALenguaje.setActionCommand("btnALenguaje");

        txtLenguaje = new JTextField();
        txtLenguaje.setColumns(10);
        txtLenguaje.setBounds(26, 217, 72, 28);
        contentPane.add(txtLenguaje);

        listaLenguaje = new DefaultListModel();
        lstLenguaje = new JList(listaLenguaje);
        lstLenguaje.setBounds(154, 181, 105, 109);
        contentPane.add(lstLenguaje);
        lstLenguaje.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

        JLabel lblLenguaje = new JLabel("Lenguaje");
        lblLenguaje.setBounds(95, 161, 59, 16);
        contentPane.add(lblLenguaje);

        txtFinal = new JTextField();
        txtFinal.setText("QFinal");
        txtFinal.setColumns(10);
        txtFinal.setBounds(26, 298, 72, 28);
        contentPane.add(txtFinal);

        DefaultTableModel modelo = new DefaultTableModel();
        modelo.setColumnCount(1);
        tblTrans = new JTable(modelo);
        modelo.addColumn("Prueba");
        tblTrans.revalidate();
        tblTrans.setBounds(316, 47, 248, 243);
        contentPane.add(tblTrans);

        JLabel lblTransiciones = new JLabel("Transiciones");
        lblTransiciones.setBounds(394, 19, 89, 16);
        contentPane.add(lblTransiciones);

        JButton btnAceptar = new JButton("Aceptar");
        btnAceptar.setBounds(476, 311, 117, 29);
        contentPane.add(btnAceptar);
        btnAceptar.addActionListener(this);
        btnAceptar.setActionCommand("btnAceptar");
    }
}

我对滚动窗格的看法是正确的。这对我有用:

    DefaultTableModel modelo = new DefaultTableModel();
    modelo.setColumnCount(1);
    modelo.addColumn("Prueba");
    tblTrans = new JTable(modelo);
    JScrollPane sPane = new JScrollPane(tblTrans);
    sPane.setBounds(316, 47, 248, 243);
    contentPane.add(sPane);

将JTable放在JScrollPane中。完全没有成功,我已将建议复制到我的主要问题中,到目前为止,该表仍然是一个空白的正方形。如果使用空布局,则必须在JScrollPane上设置边界,而不是在JTable上设置边界。@Andresdurakenny Espinosa请查看我在您的问题中编辑的屏幕截图(然后将其删除)。很好的证据说明为什么不使用
null
布局!谢谢!:)我会考虑的!:D
    DefaultTableModel modelo = new DefaultTableModel();
    modelo.setColumnCount(1);
    modelo.addColumn("Prueba");
    tblTrans = new JTable(modelo);
    JScrollPane sPane = new JScrollPane(tblTrans);
    sPane.setBounds(316, 47, 248, 243);
    contentPane.add(sPane);