Ich habe eine Frage zu Graphics in Java. Vielleicht ist es eine grundlegende Frage. Unten können Sie meinen Code sehen, um ein Graphics-Objekt mit meinem Panel in einem JFrame zu erstellen. Ich möchte ein Grafikobjekt im Konstruktor erstellen. (Wenn ich das Grafikobjekt in einer Schaltfläche erstelle, funktioniert es) Wenn ich die Anwendung starte, bekomme ich sofort eine Nullpointer-Ausnahme wegen g.setColor (Color.RED);Java Graphics Nullpointer
Aber ich verstehe nicht, warum ich diese Ausnahme bekomme. Ich habe das Programm debugged und das Panel wird erstellt, bevor ich das verwende .. = panel.getGraphics(); Befehl. Also normalerweise sollte mein Graphics-Objekt korrekt und nicht null generiert werden. Also sollte es kein Problem sein, eine Farbe einzustellen. Können Sie mir bitte erklären, warum ich diese Ausnahme bekomme?
public class G2DTest extends JFrame {
private JPanel contentPane;
private JPanel panel;
Graphics g;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
G2DTest frame = new G2DTest();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public G2DTest() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 796, 810);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
panel = new JPanel();
panel.setBackground(Color.WHITE);
panel.setBounds(80, 87, 309, 234);
contentPane.add(panel);
JRadioButton rdbtnRot = new JRadioButton("rot");
rdbtnRot.setBounds(438, 183, 251, 41);
contentPane.add(rdbtnRot);
g = panel.getGraphics();
g.setColor(Color.RED);
}
liegt auf der Hand, 'g' ist null – logger
[Dies] (http://stackoverflow.com/questions/8184913/any-alternative-to-calling-getgraphics-which-is-returning-null) nützlich sein kann. –