Gå til innhold

setVisible forårsaker NullPointerException


Anbefalte innlegg

Heisann

 

har et insekt i min applikasjon som jeg frustrerende nok ikke finner kilden til:

 

Exception in thread "main" java.lang.NullPointerException
at sun.awt.windows.WPanelPeer.restack(Unknown Source)
at sun.awt.windows.WPanelPeer.restack(Unknown Source)
at sun.awt.windows.WPanelPeer.restack(Unknown Source)
at sun.awt.windows.WPanelPeer.restack(Unknown Source)
at sun.awt.windows.WPanelPeer.restack(Unknown Source)
at sun.awt.windows.WPanelPeer.restack(Unknown Source)
at sun.awt.windows.WPanelPeer.restack(Unknown Source)
at sun.awt.windows.WWindowPeer.restack(Unknown Source)
at java.awt.Container.addNotify(Unknown Source)
at java.awt.Window.addNotify(Unknown Source)
at java.awt.Frame.addNotify(Unknown Source)
at java.awt.Window.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at java.awt.Window.setVisible(Unknown Source)
at org.bio.sigve.gui.JStatusBar.main(JStatusBar.java:56)

 

Feilen oppstår hvis jeg adder en instans av følgende klasse til en JFrame. Main-metoden i denne koden frembringer feilen:

 

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.FlowLayout;


import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import javax.swing.border.BevelBorder;

public class JStatusBar extends JPanel {
private Component[] columns;

public JStatusBar(){
 super(new FlowLayout());
 setBorder(new BevelBorder(BevelBorder.LOWERED));
 createJStatusBar(1);
}
public JStatusBar(int cols) {
 super(new FlowLayout());
 createJStatusBar(cols);
}

private void createJStatusBar(int cols) {
 columns = new JLabel[cols];
 
 for(int i = 0; i<columns.length;i++) {
 	columns[i] = new JLabel("");
 	JPanel p = new JPanel();
 	p.setBorder(new BevelBorder(BevelBorder.LOWERED));
 	//p.add(columns[i]);
 	add(p);
 }
 
 
}
public void setComponent(Component c, int index) {
 
}
public Component getComponent(int index) {
 return null;
}
public void setText(String text, int index) {
 ((JLabel)columns[index]).setText(text);
}
public static void main(String[] args) {
 JFrame f = new JFrame();
 JPanel rot = new JPanel(new BorderLayout());
 f.getContentPane().add(rot);
 JStatusBar status = new JStatusBar();
 rot.add(status);
 status.setText("Hei!", 0);
 f.setVisible(true);
}
}

Lenke til kommentar
Videoannonse
Annonse

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...