Dvojrozměrná pole v Javě jsou pole obsahující jednorozměrná pole.
int [] [] a = { { 1, 2, 3}, { 10, 20 } };
int [] [] b = new int [2] [3];
int [] [] c = new int [3] [ ];
c[0] = new int [] { 1, 2, 3 }; c[1] = new int [] { 10, 20 }; c[2] = new int [] { 100 };
nebo
c[0] = new int [] { }; // c[0] má nula prvků c[1] = new int [] { 10 }; // c[1] má jeden prvek c[2] = new int [] { 100, 200 };
Můžeme např. vytvořit pole 3 x 2, obsahující nulové ukazatele na dvojrozměrná pole
int [][][][] t = new int [3][2][][]; System.out.println (t.length); // vytiskne 3 System.out.println (t[0].length); // 2 System.out.println (t[0] == null ? "null" : "array"); // array System.out.println (t[0][0] == null ? "null" : "array"); // null
int [] [] a = { { 1, 2, 3}, { 10, 20 } }; int [] [] b = new int [2] [3]; int [] [] c = new int [3] [ ]; int [] [] d = new int [0] [0]; int [] [] e = null; int [] [] p = a;
package experiment; import java.awt.*; import org.netbeans.lib.awtextra.AbsoluteConstraints; public class Display2D extends javax.swing.JFrame { public Display2D () { initComponents(); getContentPane().setLayout(new javax.swing.BoxLayout(getContentPane(), javax.swing.BoxLayout.Y_AXIS)); } public Display2D (String name, int [ ] [ ] a) { this (); put (name, a); } private void initComponents() { /* ... */ } public void put (String name, int [] [] a) { if (a == null) { setTitle (name + " == null"); } else { int n = a.length; setTitle (name+ ", " + name + ".length == " + n); Container target = getContentPane(); for (int i = 0; i < n; i++) { DisplayPanel d = new DisplayPanel (name + "[" + i + "]", a[i]); target.add (d); } pack (); } } private static int x = 10; private static int y = 10; public static void demo (String name, int [] [] a ) { Display2D w = new Display2D (name, a); w.setVisible (true); w.setLocation (x, y); x = x + 40; y = y + 40; } public static void main(String args[]) { int [] [] a = { { 1, 2, 3}, { 10, 20 } }; int [] [] b = new int [5] [5]; int [] [] c = new int [3] [ ]; int [] [] d = new int [0] [0]; int [] [] e = null; demo ("a", a); demo ("b", b); demo ("c", c); demo ("d", d); demo ("e", e); int [] [] t = new int [5] [ ]; int base = 1; for (int i = 0; i < t.length; i++) { t[i] = new int [t.length - i]; for (int k = 0; k < t[i].length; k++) t[i][k] = (k+1) * base; base *= 10; } demo ("t", t); } }
int n = a.length; String [] title = new String [n]; String [] [] data = new String [1] [n];
Pole naplníme hodnotami
for (int i = 0; i < n; i++) { title [i] = name + "[" + i + "]" ; data [0][i] = "" + a[i]; // convert to string }
Vytvoříme model, který bude tabulce typu JTable dodávat data na základě našich dvou polí.
A model předáme tabulce.
DefaultTableModel model = new DefaultTableModel (data, title); jTable1.setModel (model);
Téměř celá třída DisplayPanel
public class DisplayPanel extends javax.swing.JPanel { public DisplayPanel () { initComponents(); } public DisplayPanel (String name, int [] a) { initComponents(); put (name, a); } public void put (String name, int a []) { if (a == null) { jLabel1.setText ("null"); jLabel1.setForeground (new Color (255, 0, 0)); jLabel1.setFont(new java.awt.Font("Dialog", 0, 36)); jTextField1.setText ("null"); jTextField1.setForeground (new Color (255, 0, 0)); // remove (jTable1); // getContentPane().remove (jS) jTextField1.setVisible (false); jScrollPane1.setVisible (false); } else { int n = a.length; jLabel1.setText (name + ".length"); jTextField1.setText ("" + n);// convert to string String [] title = new String [n]; String [] [] data = new String [1] [n]; for (int i = 0; i < n; i++) { title [i] = name + "[" + i + "]" ; data [0][i] = "" + a[i]; // convert to string } DefaultTableModel model = new DefaultTableModel (data, title); jTable1.setModel (model); TableColumnModel columnModel = jTable1.getColumnModel(); for (int i = 0; i < n; i++) columnModel.getColumn(i).setMaxWidth (80); if (n == 0) jScrollPane1.setVisible (false); } } }
int [] [] a = { { 1, 2, 3}, { 10, 20 } }; int [] [] b = new int [5] [5]; int [] [] c = new int [3] [ ];