java - 将 Arraylist 导入到 JTable

标签 java swing jtable

我有一个 ArrayString,其中包含一些我想在 GUI 上打印的数据,我开始使用 JPanel 等,最后使用 Eclipse 上的 windowbuilder 来帮助我修改视觉方面,我认为我的代码很糟糕(或者至少看起来像这样)我发现了一些与我的问题类似的线索,但我并没有真正理解这个想法:

我可以不使用 Jtable 来代替看起来像一堆垃圾的东西吗?我只是无法理解 JTable,我希望它看起来就像我的代码输出,但我不明白该表如何读取数组字符串以及如何像我的表一样“输出它”,我不知道如何实现组合框...任何帮助都会很有用,谢谢!

编辑:我的第一个想法是每个“Jtextfield”都会“导入”每个数据行,但我认为这是非常低效的,并且当我可以让我的生活更简单时可能容易出现编码错误?

这是渲染代码的图像:http://i57.tinypic.com/34j7mtd.jpg

enter image description here

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JComboBox;
import javax.swing.JTextField;


public class InfoVehiculos extends JFrame {
    private JTextField textField;
    private JTextField textField_1;
    private JTextField textField_2;
    private JTextField textField_3;
    private JTextField textField_4;
    private JTextField textField_5;
    private JTextField textField_6;
    private JTextField textField_7;
    private JTextField textField_8;
    private JTextField textField_9;
    private JTextField textField_10;
    private JTextField textField_11;
    private JTextField textField_12;
    private JTextField textField_13;
    private JTextField textField_14;
    private JTextField textField_15;
    private JTextField textField_16;
    private JTextField textField_17;
    private JTextField textField_18;
    private JTextField textField_19;
    private JTextField textField_20;
    private JTextField textField_21;
    private JTextField textField_22;
    private JTextField textField_23;
    private JTextField textField_24;
    private JTextField textField_25;
    private JTextField textField_26;
    private JTextField textField_27;
    private JTextField textField_28;
    private JTextField textField_29;
    private JTextField textField_30;
    private JTextField textField_31;
    private JTextField textField_32;
    private JTextField textField_33;
    private JTextField textField_34;

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

    /**
     * Create the frame.
     */
    public InfoVehiculos() 
    {
        setTitle("Informacion");
        setBounds(100, 100, 495, 309);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        getContentPane().setLayout(null);

        JLabel lblTipo = new JLabel("Tipo");
        lblTipo.setBounds(39, 24, 46, 14);
        getContentPane().add(lblTipo);

        JLabel lblMarca = new JLabel("Marca");
        lblMarca.setBounds(95, 24, 46, 14);
        getContentPane().add(lblMarca);

        JLabel lblModelo = new JLabel("Modelo");
        lblModelo.setBounds(151, 24, 46, 14);
        getContentPane().add(lblModelo);

        JLabel lblMatrcula = new JLabel("Matricula");
        lblMatrcula.setBounds(207, 24, 46, 14);
        getContentPane().add(lblMatrcula);

        JLabel lblItv = new JLabel("ITV");
        lblItv.setBounds(281, 24, 46, 14);
        getContentPane().add(lblItv);

        JLabel lblParking = new JLabel("Parking");
        lblParking.setBounds(337, 24, 46, 14);
        getContentPane().add(lblParking);

        JLabel lblEstado = new JLabel("Estado");
        lblEstado.setBounds(410, 24, 46, 14);
        getContentPane().add(lblEstado);

        //Cada combo box se puede desplegar para A/B/C
        JComboBox ComboTipo = new JComboBox();
        ComboTipo.setBounds(25, 49, 35, 20);
        ComboTipo.addItem("A");
        ComboTipo.addItem("B");
        ComboTipo.addItem("C");
        getContentPane().add(ComboTipo);

        JComboBox ComboTipo1 = new JComboBox();
        ComboTipo1.setBounds(25, 80, 35, 20);
        ComboTipo1.addItem("A");
        ComboTipo1.addItem("B");
        ComboTipo1.addItem("C");
        getContentPane().add(ComboTipo1);

        JComboBox ComboTipo2 = new JComboBox();
        ComboTipo2.setBounds(25, 111, 35, 20);
        ComboTipo2.addItem("A");
        ComboTipo2.addItem("B");
        ComboTipo2.addItem("C");
        getContentPane().add(ComboTipo2);

        JComboBox ComboTipo3 = new JComboBox();
        ComboTipo3.setBounds(25, 142, 35, 20);
        ComboTipo3.addItem("A");
        ComboTipo3.addItem("B");
        ComboTipo3.addItem("C");
        getContentPane().add(ComboTipo3);

        JComboBox ComboTipo4 = new JComboBox();
        ComboTipo4.setBounds(25, 173, 35, 20);
        ComboTipo4.addItem("A");
        ComboTipo4.addItem("B");
        ComboTipo4.addItem("C");
        getContentPane().add(ComboTipo4);

        JComboBox ComboTipo5 = new JComboBox();
        ComboTipo5.setBounds(25, 204, 35, 20);
        ComboTipo5.addItem("A");
        ComboTipo5.addItem("B");
        ComboTipo5.addItem("C");
        getContentPane().add(ComboTipo5);

        JComboBox ComboTipo6 = new JComboBox();
        ComboTipo6.setBounds(25, 235, 35, 20);
        ComboTipo6.addItem("A");
        ComboTipo6.addItem("B");
        ComboTipo6.addItem("C");
        getContentPane().add(ComboTipo6);

        //Cada combobox tiene activo o inactivo
        JComboBox ComboEstado = new JComboBox();
        ComboEstado.setBounds(408, 49, 50, 20);
        ComboEstado.addItem("Activo");
        ComboEstado.addItem("Inactivo");
        getContentPane().add(ComboEstado);

        JComboBox ComboEstado1 = new JComboBox();
        ComboEstado1.setBounds(408, 80, 50, 20);
        ComboEstado1.addItem("Activo");
        ComboEstado1.addItem("Inactivo");
        getContentPane().add(ComboEstado1);

        JComboBox ComboEstado2 = new JComboBox();
        ComboEstado2.setBounds(408, 111, 50, 20);
        ComboEstado2.addItem("Activo");
        ComboEstado2.addItem("Inactivo");
        getContentPane().add(ComboEstado2);

        JComboBox ComboEstado3 = new JComboBox();
        ComboEstado3.setBounds(408, 142, 50, 20);
        ComboEstado3.addItem("Activo");
        ComboEstado3.addItem("Inactivo");
        getContentPane().add(ComboEstado3);

        JComboBox ComboEstado4 = new JComboBox();
        ComboEstado4.setBounds(408, 173, 50, 20);
        ComboEstado4.addItem("Activo");
        ComboEstado4.addItem("Inactivo");
        getContentPane().add(ComboEstado4);

        JComboBox ComboEstado5 = new JComboBox();
        ComboEstado5.setBounds(408, 204, 50, 20);
        ComboEstado5.addItem("Activo");
        ComboEstado5.addItem("Inactivo");
        getContentPane().add(ComboEstado5);

        JComboBox ComboEstado6 = new JComboBox();
        ComboEstado6.setBounds(408, 235, 50, 20);
        ComboEstado6.addItem("Activo");
        ComboEstado6.addItem("Inactivo");
        getContentPane().add(ComboEstado6);

        textField = new JTextField();
        textField.setBounds(70, 49, 71, 20);
        getContentPane().add(textField);
        textField.setColumns(10);

        textField_1 = new JTextField();
        textField_1.setBounds(70, 80, 71, 20);
        getContentPane().add(textField_1);
        textField_1.setColumns(10);

        textField_2 = new JTextField();
        textField_2.setBounds(70, 111, 71, 20);
        getContentPane().add(textField_2);
        textField_2.setColumns(10);

        textField_3 = new JTextField();
        textField_3.setBounds(70, 142, 71, 20);
        getContentPane().add(textField_3);
        textField_3.setColumns(10);

        textField_4 = new JTextField();
        textField_4.setBounds(70, 173, 71, 20);
        getContentPane().add(textField_4);
        textField_4.setColumns(10);

        textField_5 = new JTextField();
        textField_5.setBounds(70, 204, 72, 20);
        getContentPane().add(textField_5);
        textField_5.setColumns(10);

        textField_6 = new JTextField();
        textField_6.setBounds(70, 235, 72, 20);
        getContentPane().add(textField_6);
        textField_6.setColumns(10);

        textField_7 = new JTextField();
        textField_7.setBounds(151, 49, 48, 20);
        getContentPane().add(textField_7);
        textField_7.setColumns(10);

        textField_8 = new JTextField();
        textField_8.setBounds(151, 80, 48, 20);
        getContentPane().add(textField_8);
        textField_8.setColumns(10);

        textField_9 = new JTextField();
        textField_9.setBounds(151, 111, 48, 20);
        getContentPane().add(textField_9);
        textField_9.setColumns(10);

        textField_10 = new JTextField();
        textField_10.setBounds(151, 142, 48, 20);
        getContentPane().add(textField_10);
        textField_10.setColumns(10);

        textField_11 = new JTextField();
        textField_11.setBounds(151, 173, 48, 20);
        getContentPane().add(textField_11);
        textField_11.setColumns(10);

        textField_12 = new JTextField();
        textField_12.setBounds(151, 204, 48, 20);
        getContentPane().add(textField_12);
        textField_12.setColumns(10);

        textField_13 = new JTextField();
        textField_13.setBounds(151, 235, 48, 20);
        getContentPane().add(textField_13);
        textField_13.setColumns(10);

        textField_14 = new JTextField();
        textField_14.setBounds(207, 49, 59, 20);
        getContentPane().add(textField_14);
        textField_14.setColumns(10);

        textField_15 = new JTextField();
        textField_15.setBounds(207, 80, 59, 20);
        getContentPane().add(textField_15);
        textField_15.setColumns(10);

        textField_16 = new JTextField();
        textField_16.setBounds(207, 111, 59, 20);
        getContentPane().add(textField_16);
        textField_16.setColumns(10);

        textField_17 = new JTextField();
        textField_17.setBounds(207, 142, 59, 20);
        getContentPane().add(textField_17);
        textField_17.setColumns(10);

        textField_18 = new JTextField();
        textField_18.setBounds(207, 173, 59, 20);
        getContentPane().add(textField_18);
        textField_18.setColumns(10);

        textField_19 = new JTextField();
        textField_19.setBounds(207, 204, 59, 20);
        getContentPane().add(textField_19);
        textField_19.setColumns(10);

        textField_20 = new JTextField();
        textField_20.setBounds(207, 235, 59, 20);
        getContentPane().add(textField_20);
        textField_20.setColumns(10);

        textField_21 = new JTextField();
        textField_21.setBounds(269, 49, 32, 20);
        getContentPane().add(textField_21);
        textField_21.setColumns(10);

        textField_22 = new JTextField();
        textField_22.setBounds(269, 80, 32, 20);
        getContentPane().add(textField_22);
        textField_22.setColumns(10);

        textField_23 = new JTextField();
        textField_23.setBounds(269, 111, 32, 20);
        getContentPane().add(textField_23);
        textField_23.setColumns(10);

        textField_24 = new JTextField();
        textField_24.setBounds(269, 142, 32, 20);
        getContentPane().add(textField_24);
        textField_24.setColumns(10);

        textField_25 = new JTextField();
        textField_25.setBounds(269, 173, 32, 20);
        getContentPane().add(textField_25);
        textField_25.setColumns(10);

        textField_26 = new JTextField();
        textField_26.setBounds(269, 204, 32, 20);
        getContentPane().add(textField_26);
        textField_26.setColumns(10);

        textField_27 = new JTextField();
        textField_27.setBounds(269, 235, 32, 20);
        getContentPane().add(textField_27);
        textField_27.setColumns(10);

        textField_28 = new JTextField();
        textField_28.setBounds(312, 49, 86, 20);
        getContentPane().add(textField_28);
        textField_28.setColumns(10);

        textField_29 = new JTextField();
        textField_29.setBounds(312, 80, 86, 20);
        getContentPane().add(textField_29);
        textField_29.setColumns(10);

        textField_30 = new JTextField();
        textField_30.setBounds(312, 111, 86, 20);
        getContentPane().add(textField_30);
        textField_30.setColumns(10);

        textField_31 = new JTextField();
        textField_31.setBounds(312, 142, 86, 20);
        getContentPane().add(textField_31);
        textField_31.setColumns(10);

        textField_32 = new JTextField();
        textField_32.setBounds(312, 173, 86, 20);
        getContentPane().add(textField_32);
        textField_32.setColumns(10);

        textField_33 = new JTextField();
        textField_33.setBounds(312, 204, 86, 20);
        getContentPane().add(textField_33);
        textField_33.setColumns(10);

        textField_34 = new JTextField();
        textField_34.setBounds(312, 235, 86, 20);
        getContentPane().add(textField_34);
        textField_34.setColumns(10);

    }
}

最佳答案

创建表和模型,然后创建列标题:

DefaultTableModel dftModel = new DefaultTableModel();
JTable mytable = new JTable(dftModel);
myTable.setColumnIdentifiers(new String [] {"Tipo","Column 1","Column 2","Column 3"});

根据需要从数组列表中添加行:

myTable.addRow(new String[] {"",yourArrayList.get(1),"blah","blah"});

像这样添加您的 Tipo 组合框:

String [] tipArray = {"A","B","C"};
DefaultComboBoxModel comboModel = new DefaultComboBoxModel(tipArray);
JComboBox ComboTipo = new JComboBox(comboModel);
mytable.getColumnModel().getColumn(0).setCellEditor(new DefaultCellEditor(ComboTipo));

关于java - 将 Arraylist 导入到 JTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23699767/

相关文章:

java - Python 和 Java 在 RegEx 语法上的差异

java - 使用 Nimbus,仅当控件具有焦点时才使控件背景颜色为黄色?

java - 如何将图像插入到 JTable 单元格中

Java 使用带有 try-with-resources 的扫描器

java - 实现具有相同功能的 Controller 的最佳实践是什么?

java - 将 MouseListener 添加到 java.awt.Image

java - 如何为 JMenuItem 创建和设置椭圆形图标

java - 防止复选框在 JTable 中移动

java - 无法将 JTable 添加到 GUI

WAR 中的 Java getResourceAsStream JAR