G
Guest
Gast
Hallo,
ich möchte in einem JFrame verschiedene 2D-Objekte zeichnen. Zum Zeichnen benutze ich eine eigene Klasse, die von der Klasse JComponent abgeleitet ist. In dieser überschreibe ich die paintComponent()-Methode, die für das Zeichnen zuständig ist. Soweit so gut.
Das Problem ist aber nun, dass die dargestellten Objekte (z. B. Rechtecke, Ovale, ...) nicht vollständig gezeichnet werden. Von einem Rechteck werden nur 2 Seiten gezeichnet, die Linke und die Obere. Ein Oval z. B. hat auf der rechten und unteren Seite eine Lücke.
Habe schon alles mögliche ausprobiert, aber leider ohne Erfolg und bin für jede Hilfe und jeden Hinweis dankbar. Es scheint sich um ein generelles Probelm zu handeln, evtl. auch was mein Verständnis dafür betrifft.
Hier aber erst mal der Code (funktionsfähig), die Klasse mit der main():
...und die Klasse zum Zeichnen:
Hoffe auf viele Hinweise/Lösungsvorschläge!
Schöne Grüße
ich möchte in einem JFrame verschiedene 2D-Objekte zeichnen. Zum Zeichnen benutze ich eine eigene Klasse, die von der Klasse JComponent abgeleitet ist. In dieser überschreibe ich die paintComponent()-Methode, die für das Zeichnen zuständig ist. Soweit so gut.
Das Problem ist aber nun, dass die dargestellten Objekte (z. B. Rechtecke, Ovale, ...) nicht vollständig gezeichnet werden. Von einem Rechteck werden nur 2 Seiten gezeichnet, die Linke und die Obere. Ein Oval z. B. hat auf der rechten und unteren Seite eine Lücke.
Habe schon alles mögliche ausprobiert, aber leider ohne Erfolg und bin für jede Hilfe und jeden Hinweis dankbar. Es scheint sich um ein generelles Probelm zu handeln, evtl. auch was mein Verständnis dafür betrifft.
Hier aber erst mal der Code (funktionsfähig), die Klasse mit der main():
Code:
package layout;
import javax.swing.JFrame;
public class GraphicsLayout extends JFrame {
// private DrawerPainter.Shape paint;
public GraphicsLayout() {
super("GraphicsLayout");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(800, 600);
setLayout(null);
DrawerPainter drawerPainter = new DrawerPainter();
drawerPainter.setLocation(10, 10);
drawerPainter.setSize(100, 100);
getContentPane().add(drawerPainter);
//-------------------- inner class --------------------
// paint = drawerPainter.new Shape();
// paint.setLocation(50, 10);
// paint.setSize(200, 100);
// getContentPane().add(paint);
//-------------------- inner class --------------------
}
public static void main(String[] args) {
GraphicsLayout graphicsLayout = new GraphicsLayout();
graphicsLayout.setVisible(true);
graphicsLayout.repaint();
}
}
...und die Klasse zum Zeichnen:
Code:
package layout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JComponent;
public class DrawerPainter extends JComponent {
public DrawerPainter() {
}
protected void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
g2d.setBackground(Color.ORANGE);
g2d.drawRect(getX(), getY(), getWidth(), getHeight());
}
// class Shape extends JComponent {
// protected void paintComponent(Graphics g) {
// Graphics2D g2d = (Graphics2D) g;
// g2d.drawRect(getX(), getY(), getWidth(), getHeight());
// }
// }
}
Hoffe auf viele Hinweise/Lösungsvorschläge!
Schöne Grüße