31. oktober 2002 - 11:41Der er
39 kommentarer og 1 løsning
Hente og vise fra en anden klasse.
Hejsa.. Det er garanteret et pi**e let spørgsmål, men nu gider jeg ikke rode med det mere. Jeg har lavet en tabel som jeg kalder venliste i en klasse som her icqListe i et program med masser af inderklasser… Hvordan får jeg vist den tabel i en anden klasse, hvor jeg har defineret et vindue.. Sådan tilføjer jeg normalt noget, her er det en knap :-):
getContentPane().add(jButtonGem, new GridBagConstraints (3, 6, 1, 1, 0.0, 0.0,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
Har prøvet alt (bortset fra det rigtige) bla.: getContentPane().add(icqListe.venliste, new GridBagConstraints (3, 7, 1, 1, 0.0, 0.0,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0));
Men får fejlen: non-static variable pane cannot be referenced from a static context getContentPane().add(icqListe.venliste, new GridBagConstraints ^
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
frame = new JFrame("Icq-Venner"); pane = new JPanel(); pane.setLayout(new BoxLayout(pane, BoxLayout.Y_AXIS)); // Laver vindue og panel
venliste = new JTable(rows, top); setColWidth(0,150); // Navn setColWidth(1,175); // Nickname setColWidth(2,50); // Icqnr // Laver tabelen
scrollPane = new JScrollPane(venliste); venliste.setPreferredScrollableViewportSize(new Dimension(800, 200)); pane.add(scrollPane, BorderLayout.CENTER); // Tilføjer scrollpanel til vinduet, hvis det er for lille.
frame.getContentPane().add(pane); // Tilføjer panelet til vinduet
} public void jButtonGem_actionPerformed(ActionEvent e) { printDebugData(venliste); Database db = new Database(); db.open(); int res=db.doUpdate("Update Venner set Navn='Anders' Where Nickname='Anden'"); db.close(); System.out.println("OK"); }
private void printDebugData(JTable table) { int numRows = table.getRowCount(); int numCols = table.getColumnCount(); javax.swing.table.TableModel model = table.getModel(); System.out.println("Indtastet data: "); System.out.println(); for (int i=0; i < numRows; i++) { System.out.print(" Row " + i + ":"); for (int j=0; j < numCols; j++) { System.out.print(" " + model.getValueAt(i, j)); } System.out.println(); System.out.println(); } System.out.println("--------------------------"); }
public void setColWidth(int col, int width) { venliste.getColumnModel().getColumn(col).setPreferredWidth(width); } }
i hvilken klasse skulle icqListe liste = new icqListe(); være?? For den siger at den ikke kan finde: symbol : constructor icqListe () location: class icqListe icqListe liste = new icqListe(); ^
puha det er en lang historie... alt i alt fylder det 1724 linier...
public static void main(String para[]) {try{ UIManager.setLookAndFeel"com.sun.java.swing.plaf.windows.WindowsLookAndFeel");} catch (Exception e) { } new OpstartsBillede(); } public static void startProgram(){ database = new DbHandler(); new HovedMenu();} Som ligger i en public klasse der hedder Startmain
ingen ting andet end en fejl i konsolen: java.lang.NullPointerException at java.awt.Container.addImpl(Container.java:621) at java.awt.Container.add(Container.java:307) at StartMenu.<init>(Startmain.java:1240)
jo men någonstans måste du ju skriva icqListe listInstance = new icqListe(........ etc før att skapa en instance av listan, och sedan skriver du listInstance .getVenListe() du kan ikke skriva icqListe.getVenListe() om ikke getVenListe() er en static function, och hvis getVenListe() ER en static function kommer den att returnera en JTable som er null....
ett alernativ er:
public static JTable getVenListe() { if(_venliste == null) _venliste = new JTable(<vector som du vill bruge>, <vector som du vill bruge>); return _venliste; }
fejlet du laver er att ikke skapa instancer av dine objekter (med new xxxx )
och derfor er de null...
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.