Hallo allerseits,
Im folgenden, einfachen Grafikprogramm wird leider die Hintergrundfarbe nicht auf grün gesetzt:
In der Klasse KSZeichenfläche extends JPanel wird ein JButton und ein Objekt der Klasse
Malflaeche extends JPanel angeheftet.
Ich will die Hintergrundfarbe von Malflaeche auf Grün setzen.
Habe alles mögliche probiert (siehe Quellcode mit Kommentar "Hilft nichts" versehen).
Habe auch im Internet recherchiert.
Warum klappt das alles nicht?
Welchen Quellcode muß man einfügen, damit es funktioniert ?
Was ist so schwer daran, nur eine Hintergrundfarbe zu ändern ?
mfg
ern
Hier befindet sich das vollständige lauffähige Projekt:
Im folgenden, einfachen Grafikprogramm wird leider die Hintergrundfarbe nicht auf grün gesetzt:
In der Klasse KSZeichenfläche extends JPanel wird ein JButton und ein Objekt der Klasse
Malflaeche extends JPanel angeheftet.
Ich will die Hintergrundfarbe von Malflaeche auf Grün setzen.
Habe alles mögliche probiert (siehe Quellcode mit Kommentar "Hilft nichts" versehen).
Habe auch im Internet recherchiert.
Warum klappt das alles nicht?
Welchen Quellcode muß man einfügen, damit es funktioniert ?
Was ist so schwer daran, nur eine Hintergrundfarbe zu ändern ?
mfg
ern
Hier befindet sich das vollständige lauffähige Projekt:
Code:
package hintergrundtest1;
import javax.swing.event.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Startklasse {
public static void main(String[] args) {
KSZeichenflaeche ks = new KSZeichenflaeche();
// Hilft nichts
ks.setBackground(Color.GREEN);
JFrame f = new JFrame();
f.setSize(700, 800);
f.getContentPane().add(ks);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Hilft nichts
f.getContentPane().setBackground(Color.GREEN);
f.setVisible(true);
ks.getMalflaeche().maleInsBild();
// Hilft nichts
f.getContentPane().setBackground(Color.GREEN);
// Hilft nichts
ks.setBackground(Color.GREEN);
}
}
class KSZeichenflaeche extends JPanel {
private Malflaeche malflaeche;
public KSZeichenflaeche() {
JButton buttonHilfe;
Malflaeche malflaeche;
GridBagLayout gbl;
gbl = new GridBagLayout();
buttonHilfe = new JButton("HILFE");
malflaeche = new Malflaeche();
this.malflaeche = malflaeche;
// Hilft nichts
malflaeche.setBackground(Color.GREEN);
setLayout(gbl);
addiereKomponente(gbl, buttonHilfe, 0, 0, 1, 1, 2, 0);
addiereKomponente(gbl, malflaeche, 0, 1, 3, 1, 1, 1);
}
public void addiereKomponente(GridBagLayout gbl, Component c, int x, int y, int width, int height, double weightx, double weighty) {
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.BOTH;
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = width;
gbc.gridheight = height;
gbc.weightx = weightx;
gbc.weighty = weighty;
gbl.setConstraints(c, gbc);
add(c);
}
public Malflaeche getMalflaeche() {
return malflaeche;
}
}
class Malflaeche extends JPanel {
private Image image;
public Malflaeche() {
}
public void maleInsBild() {
Graphics graphics = null;
int sx, sy;
sx = this.getSize().width;
sy = this.getSize().height;
image = createImage(sx, sy);
graphics = image.getGraphics();
System.out.println("sx=" + sx + "sy=" + sy);
// Hilft nichts
setBackground(Color.GREEN);
// Hilft nichts
repaint();
graphics.setColor(Color.RED);
graphics.drawLine(30, 40, 300, 400);
graphics.drawLine(400, 300, 30, 40);
}
public void paintComponent(Graphics g) {
// Hilft nichts
super.paintComponent(g);
g.drawImage(image, 0, 0, null);
}
}