Hi!
Ich habe gerade ein wenig rumgespielt und bin auf ein für mich eigenartiges Verhalten gestoßen. Kommen wir direkt zum Code:
Was wohl als Erstes auffällt: Das try-catch in
.
Hier fliegt bei mir tatsächlich beim Initialisieren zweimal eine
, weil r angeblich null ist. Dabei wird dieses augenscheinlich anfangs initialisiert und danach läuft es auch einwandfrei. Außerdem läuft da doch alles über den EDT?
Eine Initialisierung im Instance Initializer des anonymen JPanels brachte erwartungsgemäß keine Änderung. Anschließend habe ich die Klasse ausgelagert und die Initialisierung dort in den Konstruktor verschoben. Bringt auch nichts. Dann habe ich r
gemacht. So gehts.
Aber das ist ja keine richtige Lösung.
Also: Weiß jemand, woran das liegt? Java-Bug?
Ich habe gerade ein wenig rumgespielt und bin auf ein für mich eigenartiges Verhalten gestoßen. Kommen wir direkt zum Code:
Java:
import java.awt.Color;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
/**
* Ein JFrame, der bei jedem Neuzeichnen eine andere, zufällige Hintergrundfarbe erhält.
* @author xehpuk
*/
public final class RandomColorFrame extends JFrame {
public RandomColorFrame() {
setContentPane(new JPanel() {
final Random r = new Random();
@Override
public Color getBackground() {
try {
return new Color(r.nextInt());
} catch (NullPointerException e) {
System.err.println(e);
return super.getBackground();
}
}
});
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setSize(200, 200);
setLocationRelativeTo(null);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new RandomColorFrame().setVisible(true);
}
});
}
}
Code:
getBackground()
Hier fliegt bei mir tatsächlich beim Initialisieren zweimal eine
Code:
NullPointerException
Eine Initialisierung im Instance Initializer des anonymen JPanels brachte erwartungsgemäß keine Änderung. Anschließend habe ich die Klasse ausgelagert und die Initialisierung dort in den Konstruktor verschoben. Bringt auch nichts. Dann habe ich r
Code:
static
Aber das ist ja keine richtige Lösung.
Also: Weiß jemand, woran das liegt? Java-Bug?
Zuletzt bearbeitet: