Ich tue mein Bestes, um nur Lese-Tabellen (leer, aber bereit, Spalteninhalt und Zeilennamen) neben einer Liste in einer Java-Anwendung zu erstellen, aber ich kann immer noch nicht herausfinden, was das Problem ist diese TabellenErstellen von Tabellen in Java
ich die Ausnahme
Exception in thread "AWT-Eventqueue-0" java.lang.ArrayIndexOutOfBoundsException erhalten: 0 bei examples.TableData.getColumnCount (TableData.java:25) bei javax.swing.JTable.createDefaultColumnsFromModel (JTabl e.java:1285) bei javax.swing.JTable.tableChanged (JTable.java:4386) bei javax.swing.JTable.setModel (JTable.java:3688) bei javax.swing.JTable. (JTable.java : 632) bei javax.swing.JTable. (JTable.java:573) bei examples.Main $ 2.run (Main.java:77) bei java.awt.event.InvocationEvent.dispatch (InvocationEvent.java:311) bei java.awt.EventQueue.dispatchEventImpl (EventQueue.java:756) bei java.awt.EventQueue.access $ 500 (EventQueue.java:97) bei java.awt.EventQueue $ 3.run (EventQueue.java:709) bei java.awt.EventQueue $ 3.run (EventQueue.java:703) bei java.security.AccessController.doPrivileged (native Methode) bei java.security.Protecti onDomain $ 1.doIntersectionPrivilege (ProtectionDomain.java:75) bei java.awt.EventQueue.dispatchEvent (EventQueue.java:726) bei java.awt.EventDispatchThread.pumpOneEventForFilters (EventDispatchThread.java:201) bei java.awt.EventDispatchThread .pumpEventsForFilter (EventDispatchThread.java:116) bei java.awt.EventDispatchThread.pumpEventsForHierarchy (EventDispatchThread.java:105) bei java.awt.EventDispatchThread.pumpEvents (EventDispatchThread.java:101) bei java.awt.EventDispatchThread.pumpEvents (EventDispatchThread.java:93) bei java.awt.EventDispatchThread.run (EventDispatchThread.java:82) BUILD erfolgreich (Gesamtzeit: 5 Sekunden)
Hier ist die Hauptdatei:
/* Програма с графичен интерфейс (swing/awt), която
* извежда продуктовите категории от базата данни на "northwind"
* и изкарва информация за продуктите в нея
*/
package examples;
/* Компоненти на swing */
import javax.swing.SwingUtilities;
import javax.swing.JList;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.JTable;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
/* Компоненти на awt */
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
/* Компоненти на SQL ?? */
public class Main
{
public static void main(String[] args)
{
/* ЗАГЛАВИЕ на прозорец, добавяне на КОНТЕЙНЪР в прозореца */
JFrame frame = new JFrame("Product Exmplorer");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Container contentPane = frame.getContentPane();
/* Използване на JList ЛИСТ */
String labels[] = { "Test1", "Test2" };
JList jlist = new JList(labels);
/* Слагане на ПЛЪЗГАЧИ в контейнъра */
JScrollPane scrollPane1 = new JScrollPane(jlist);
contentPane.add(scrollPane1, BorderLayout.EAST);
/**********************************************************************/
/* Дефиниране на ЛИСЪНЪР за клик */
MouseListener mouseListener = new MouseAdapter()
{
public void mouseClicked(MouseEvent mouseEvent)
{
JList theList = (JList) mouseEvent.getSource();
if (mouseEvent.getClickCount() == 2)
{
int index = theList.locationToIndex(mouseEvent.getPoint());
if (index >= 0)
{
Object o = theList.getModel().getElementAt(index);
System.out.println("Double-clicked on: " + o.toString());
}
}
}
};
jlist.addMouseListener(mouseListener);
/**********************************************************************/
Runnable runner = new Runnable() // анонимен клас
{
@Override
public void run()
{
JFrame frame = new JFrame("Button model");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// създаване на таблицата
TableData td = new TableData();
JTable table = new JTable(td);
table.setAutoResizeMode(JTable.AUTO_RESIZE_NEXT_COLUMN);
JScrollPane scrollPane = new JScrollPane(table);
frame.add(scrollPane , BorderLayout.CENTER);
frame.pack();
frame.setVisible(true);
}
};
SwingUtilities.invokeLater(runner);
}
}
und hier ist der Quellcode-Paket benötigt:
package examples;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.table.AbstractTableModel;
public class TableData extends AbstractTableModel
{
//Row & Column Data
private Object[][] values =
{
};
private final String[] columnHeaders = {
"Име", "Фамилия", "Роден(а) на", "Сума", "Пол"
};
@Override
public int getRowCount()
{
return values.length;
}
@Override
public int getColumnCount()
{
return values[0].length;
}
@Override
public Object getValueAt(int rowIndex, int columnIndex)
{
return values[rowIndex][columnIndex];
}
//--------------------------------------------------------------------------
}
Ich bin fast meine schlimmsten Albträume zu haben
Sie versuchen, auf die Länge des ersten Elements von 'values' in getColumnCount() zuzugreifen, aber' values' wird auf ein leeres Array initialisiert. Es hat also per Definition kein Element. –