首页 > 解决方案 > 如何将 arrayList 2D 添加到 Object[][] 已经存在?

问题描述

arrayList[][]当我编码时,我发现了一些问题object[][]

脚步:

  1. 连接并从 MySQL 数据库中获取所有数据(这一步没问题)

  2. arraylist[][]以2D 形式添加所有数据

  3. 将最后一个二维数组列表添加到object[][]

但是我尝试了太多不起作用的代码。

public static Connection conn;
    private JFrame frame;
    private JTable table;
    public static String arr2[][];
    public static Object[][] arr;
    public static Object[][] arr1;
    public static ArrayList[][] table1 = new ArrayList[10][10];
public static void main(String[] args) {

    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                messager window = new messager();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}
private void initialize() {    
    frame = new JFrame(); 
    frame.setBounds(100, 100, 450, 300);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().setLayout(null);
    
    table = new JTable(); //this table to show data from mysql
    table.setBorder(new EtchedBorder(EtchedBorder.RAISED, null, null));
    try {
            Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
            
          conn =
                  DriverManager.getConnection("jdbc:mysql://==/test?useUnicode=true&characterEncoding=utf-8", "root", "root"); //connect to mysql

         Statement m_Statement = conn.createStatement();
            String query = "SELECT * FROM users"; //select all data from mysql

            ResultSet m_ResultSet = m_Statement.executeQuery(query); //resultset

            while (m_ResultSet.next()) { //while to show all data from mysql
            //step 1 finished
                //step 2 started
                for (int i=0;i<3;i++) { 
                      for (int j=0;j<3;j++) {
                      //here the problem how to convert all data to arraylist to add it on Object[][] (in step 3)
                    arr[i][j] = new String[][] {{m_ResultSet.getString(2),m_ResultSet.getString(3),m_ResultSet.getString(2)}};
                        table1[i][j].add(arr[i][j]);
                    }
                      }
            }

    table.setModel(new DefaultTableModel(
        new Object[][] {
            table1 //here add last array list to this Object[][] but not work       },
        new String[] {
            "name", "message", "time"
        }
    ) {
        Class[] columnTypes = new Class[] {
            String.class, String.class, String.class
        };
        public Class getColumnClass(int columnIndex) {
            return columnTypes[columnIndex];
        }
        boolean[] columnEditables = new boolean[] {
            false, false, false
        };
        public boolean isCellEditable(int row, int column) {
            return columnEditables[column];
        }
    });
    table.setFont(new Font("Tahoma", Font.PLAIN, 14));
    table.setBounds(10, 38, 414, 212);
    frame.getContentPane().add(table);
    }catch (Exception e1) {
         e1.printStackTrace();
     }
}

有时我得到这个JTable [Ljava.util.ArrayList;@6e93060b ,有时我得到这个错误消息:

 at java.awt.event.InvocationEvent.dispatch(Unknown Source) at
java.awt.EventQueue.dispatchEventImpl(Unknown Source) at
java.awt.EventQueue.access$500(Unknown Source) at
java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown 
Source) at java.security.AccessController.doPrivileged(Native Method) at 
java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(
Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at 
java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at 
java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at 
java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at 
java.awt.EventDispatchThread.pumpEvents(Unknown Source) at 
java.awt.EventDispatchThread.pumpEvents(Unknown Source) at 
java.awt.EventDispatchThread.run(Unknown Source)

标签: javaobjectarraylist

解决方案


推荐阅读