Clipping funktioniert mit eigenem Polygon nicht

Status
Nicht offen für weitere Antworten.

CroweGirl

Mitglied
Also wie Clipping funktioniert ist mir klar. Wenn ich z.B.
Code:
Rectangle k=new Rectangle(20,20,200,200);
         g2.clip(k);
        g2.draw(k);
schreibe, dann wird genau dass gemacht, was ich will. Nun habe ich aber eine eigene Klasse MyRectangle in der ich Rechtecke per MausClick auf meinem Panel erzeuge und die dann in einem Vektor(allrec) verwaltet werden.
Code:
public class MyRectangle implements Shape{
	 //..........................

	public MyRectangle(int x, int y, int width, int height, Color color,
			boolean fill) {
//.....................

	}

	/**
	 * 
	 * Zeichnet ein Rechteck
	 */
	public void paintComponent(Graphics g) {

		Graphics2D g2 = (Graphics2D) g;
		g2.setColor(color);

		if (fill)
			g2.fillRoundRect(x, y, width, height, arcWidth, arcHeight);
		else
			g2.drawRect(x, y, width, height);
		

	}
und in meiner Klasse MyPanel hab ich dann in der paintComponent(Graphics g) u.a. folgendes stehen
Code:
// zeichnet alle Rechtecke
		for (int i = 0; i < allrec.size(); i++) {
			g2.clip(((MyRectangle) allrec.get(i)));  //das funktioniert aber nicht, bekomme eine NullPointerException in der EventQueue
((MyRectangle) allrec.get(i)).paintComponent(g2);
Da es ja mit einem "normalen Rectangle" funktioniert, kann der Fehler ja nur bei meiner Klasse MyRectangle liegen. Ich habe MyRectangle von Shape erben lasse, damit ich überhaupt g2.clip(shape) machen konnte, dass ist vermutlich falsch...aber wie könnte ich es denn sonst machen? Oder mache ich einen grundsätzlichen Fehler?
 

Quaxli

Top Contributor
1. Welche Java-Version benutzt Du?
2. Wieso implementiert MyRectangle nicht von Rectangle, sondern implementiert Shape?
3. Bist Du sicher, daß Dein Vector allrec auch instanziiert und gefüllt ist?

Meines Erachtens weist die NullPointerException darauf hin, daß mit Deinem Vector etwas nicht stimmt. Poste doch mal den Code, wo Du den Vector instanziierst und füllst.
 
G

Guest

Gast
Hi,

1. 5.0
2. Davor wollte ich einfach nur per linker Mausklick aufs Panel ein Rechteck erzeugen....die ich dann in einem Vektor verwaltet habe...nun da ich per Click das Clipping machen möchte, habe ich aufgrund der Meldung, dass clip nur mit Shape funktioniert, halt implements Shape geschrieben....wenn ich extends Polygon schreibe funktioniert es aber auch nicht
3. Bei meiner ersten Version habe ich einfach per Mausclick ein Rechteck gezeichnet, Teil aus MauseListener:
Code:
public void mouseClicked(MouseEvent e) {
 if (e.getButton() == MouseEvent.BUTTON1) 
MyRectangle r = new MyRectangle(cx - b - (rbreite / 2), cy - h- (rhoehe / 2), rbreite, rhoehe, Color.BLUE, true);
myFrame.getMyPanel().addRec(r); // Rechteck wird in Vector gespeichert
myFrame.repaint(); 
System.out.println("linke Maustaste gedrückt----fertig");  //das kann ich noch lesen, danach kommt die Exception...sie muss also irgendwo in der paintComponent(Graphics g) von meinem Panel entstehen
und in meiner Klasse Panel habe ich den Vektor verwaltet und in paintComponent einfach mit
Code:
for (int i = 0; i < allrec.size(); i++) {
			((MyRectangle) allrec.get(i)).paintComponent(g2);//hier wird paintComponent() aus meiner Klasse MyRectangle aufgerufen
gezeichnet, was auch super funktioniert hat....nun möchte ich halt clippen und hab einfach nur die clip Zeile dazugefügt.
Der Vektor wird 100% gefüllt, da ich an allen möglichen Stellen prints habe und sehen kann, dass die Linke Maustaste gedrückt wurde und auch der Vektor um 1 Element erhöht wurde, also nicht mehr leer ist.
 

Quaxli

Top Contributor
Ich habe nicht unbedingt eine Idee, woran es liegen könnte. Probiere doch mal Folgendes: Anstelle Deiner for-Schleife folgenden Code:

Code:
  for (MyRectangle mr: allrec){

     System.out.println(mr);

  }

Wenn Dein Vector korrekte Werte enthält, gibt er die auch aus, wenn nicht, hast Du schon mal keine Elemente im Vector und weißt, wo Du evtl. ansetzen mußt.

Und noch eine Frage am Rande: Wozu der Aufwand mit dem Clipping? Kannst Du nicht einfach alles noch mal zeichnen? In der Regel macht sich das nicht bemerkbar.
 

CroweGirl

Mitglied
Also wenn ich das so mache,
Code:
for (MyRectangle mr: allrec){

     System.out.println(mr);

  }
dann bekomme ich die Fehlermeldung "cannot Convert from element type Object to MyRectangle"...aber mit der meiner For-schleife hat das "normale" Zeichnen ja auch funktioniert, entsprechen sollte das Clipping ja auch funktionieren.
Da ich mir allrec().size printen lasse, weiß ich 100% das in meinem Vector auch was drin ist.

Der Sinn der ganzen Übung ist, dass ich ein Foto habe, auf dem diese Rechtecke gezeichnet werden und ich dann bestimmte Veränderungen nur an dem geclippten Ausschnitt vornehme (z.B. s/w, Helligkeit usw.). Wenn ich das wie in meiner ersten Nachricht mit einem "einfachen Rechteck" mache, funktioniert ja alles auch bestens....nur mit meinem eigenen Rechteck halt nicht.
 

Marco13

Top Contributor
In dem Vector ist vielleicht was drin. Aber dort können auch 'null'en drin sein. (Und das SIND sie auch, der Exception nach). Wenn du nicht
Code:
for (MyRectangle mr: allrec){
     System.out.println(mr);
}
sondern
Code:
for (Object object: allrec){
     System.out.println(object);
}
machst, wird es keine Fehlermeldung (convert type blah blah) mehr geben, und mit an Sicherheit grenzender Wahrscheinlichkeit wird irgendwo 'null' ausgegeben.
 

CroweGirl

Mitglied
Hi,
danke für den Tipp, aber in meinem Vektor ist was drin und ich bekomme an keiner Stelle null ausgegeben, wenn ich die Zeile mit dem clip entferne.
Sobald ich die clip-Zeile aber hinzufüge bekomme ich dann folgende Fehlermeldung, würde also schon sagen, dass in meinem Vektor was drin ist:
Code:
linke Maustaste gedrückt
Vektor Groesse davor= 0
Vektor Groesse danach= 1
linke Maustaste gedrückt----fertig
MyRectangle@1551d7f
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
Vielleicht mache ich bei clip ja auch was falsch...
 

Quaxli

Top Contributor
Evtl. liegt es auch am Methodenaufruf. Ich kann es aus dem Code oben nicht recht erkennen, aber evtl. liegt es am Aufruf des clip(...).
Schau Dir mal in der API, die Langtexte zu clip(..) bzw. setClip(..) an, evtl. bekommst Du hier einen Hinweis, woran es liegen könnte.
Ich habe den Eindruck, daß du evtl. setClip(...) solltest, bzw. an der Ecke noch ein bißchen Logik einbauen mußt.
 

Marco13

Top Contributor
Poste im zweifelsfall mal ein compilierbares Programm, wo der Fehler auftritt. Dann ist die Fehlersuche i.a. nur eine Sache von Minuten.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
S JPanel rotieren, Bild ist abgeschnitten, Clipping? AWT, Swing, JavaFX & SWT 0
T Canvas clipping AWT, Swing, JavaFX & SWT 4
frankred Bild zuschneiden - Cropping/Cutting/Clipping? AWT, Swing, JavaFX & SWT 3
Juelin if Abfrage funktioniert nicht richtig AWT, Swing, JavaFX & SWT 10
C Button ActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
P AWT Programm funktioniert nicht richtig AWT, Swing, JavaFX & SWT 35
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
M Scrollbar funktioniert nicht AWT, Swing, JavaFX & SWT 10
D Repaint Funktioniert nicht AWT, Swing, JavaFX & SWT 2
W JEditorPane textausrichtung nach settext funktioniert nicht mehr AWT, Swing, JavaFX & SWT 11
H Swing Anpassen der Textgröße im JLabel funktioniert nur bedingt AWT, Swing, JavaFX & SWT 7
sserio JFrame setIconImmage() funktioniert nicht AWT, Swing, JavaFX & SWT 3
T Swing Tooltip-Delay funktioniert nicht immer. AWT, Swing, JavaFX & SWT 1
B Output GUI funktioniert nur beim ersten Mal richtig. AWT, Swing, JavaFX & SWT 4
sserio Wie funktioniert ein Controller bei JavaFx? AWT, Swing, JavaFX & SWT 1
U Wie funktioniert das rotieren unter 2dGraphics, also wie stelle ich z. B. 90° ein? AWT, Swing, JavaFX & SWT 1
U Wie funktioniert Polygon? AWT, Swing, JavaFX & SWT 1
U Wie genau funktioniert 2dgraphics, in diesem Bezug? AWT, Swing, JavaFX & SWT 4
S ChoiceBox aus ArrayList per setValue() mit Wert belegen funktioniert nicht. AWT, Swing, JavaFX & SWT 0
H KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
H BufferedImage zurücksetzen funktioniert nicht AWT, Swing, JavaFX & SWT 12
H RPG Programmieren, label.setLocation funktioniert nicht AWT, Swing, JavaFX & SWT 7
EinNickname9 Einfacher parser funktioniert nicht AWT, Swing, JavaFX & SWT 2
F Swing Adapt Row Height funktioniert nicht richtig :( AWT, Swing, JavaFX & SWT 7
P Swing jxmapviewer hinzufügen/nutzen funktioniert nicht AWT, Swing, JavaFX & SWT 7
CptK Wie funktioniert contains() für Path2D.Double AWT, Swing, JavaFX & SWT 10
J Anbindung Textfeldklasse an Table funktioniert nicht AWT, Swing, JavaFX & SWT 3
R Actionlistener funktioniert nicht AWT, Swing, JavaFX & SWT 4
B Stylen eines JTextPane funktioniert nicht AWT, Swing, JavaFX & SWT 1
VPChief Swing Eclipse: Nach Exportieren, Button funktioniert nicht mehr AWT, Swing, JavaFX & SWT 26
H Bewegung funktioniert nicht AWT, Swing, JavaFX & SWT 3
N Pixelfarbe abgleichen funktioniert nicht AWT, Swing, JavaFX & SWT 5
A Swing JTextField an Button übergeben für Popup-Fenster funktioniert nicht AWT, Swing, JavaFX & SWT 3
N eclipse Java, bilder benutzten Funktioniert nicht AWT, Swing, JavaFX & SWT 6
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
steven789hjk543 Swing Weiß jemand, warum dieses Programm nicht funktioniert? AWT, Swing, JavaFX & SWT 7
M Swing setMaximumSize funktioniert nicht AWT, Swing, JavaFX & SWT 1
K JavaFX funktioniert nicht AWT, Swing, JavaFX & SWT 2
B AWT actionPerformed Method funktioniert nicht AWT, Swing, JavaFX & SWT 12
L JavaFX Drag and Drop funktioniert nicht AWT, Swing, JavaFX & SWT 3
M Swing Code funktioniert auf Windows aber nicht Linux... AWT, Swing, JavaFX & SWT 3
T LookAndFeel LookAndFeel funktioniert nicht beim JFrame wechsel AWT, Swing, JavaFX & SWT 3
J JavaFX addListener funktioniert nicht AWT, Swing, JavaFX & SWT 1
P CardLayout funktioniert fehlerhaft AWT, Swing, JavaFX & SWT 13
L WrapLayout funktioniert nicht AWT, Swing, JavaFX & SWT 1
kodela Accalerator für einige Menüoptionen funktioniert nicht mehr AWT, Swing, JavaFX & SWT 3
S JavaFX mit javac compilieren funktioniert nicht AWT, Swing, JavaFX & SWT 2
K Swing Entfernen von Panel funktioniert nicht AWT, Swing, JavaFX & SWT 5
J AWT System Farben / java.awt.SystemColor funktioniert nicht AWT, Swing, JavaFX & SWT 4
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
it_is_all ActionListener umlenken/ updaten mit AddActionListener funktioniert nicht AWT, Swing, JavaFX & SWT 3
K javafx app > "run in browser" funktioniert nicht AWT, Swing, JavaFX & SWT 3
N JavaFX GridPane Halignment funktioniert nicht AWT, Swing, JavaFX & SWT 1
it_is_all JLabel.setIcon - funktioniert nicht mehr AWT, Swing, JavaFX & SWT 2
R Ausgabe über JOptionPane.showMessageDialog funktioniert nicht AWT, Swing, JavaFX & SWT 2
L 2D-Grafik Frage zu Ellipse2D.Double, Abfrage, ob Punkt enthalten ist funktioniert nicht AWT, Swing, JavaFX & SWT 3
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
F "ActionListener" funktioniert nicht AWT, Swing, JavaFX & SWT 4
Z BoxLayout funktioniert nicht und Buttongröße AWT, Swing, JavaFX & SWT 18
C Java Hintergrund funktioniert nicht AWT, Swing, JavaFX & SWT 9
J Swing Wie funktioniert dieser ChangePropertyListener??? AWT, Swing, JavaFX & SWT 0
GreenTeaYT Button funktioniert nicht für Ein-und Auszahlungen? AWT, Swing, JavaFX & SWT 8
C Keylistener funktioniert nicht AWT, Swing, JavaFX & SWT 1
A Swing Programm funktioniert aber zwei Buttons werden angezeigt AWT, Swing, JavaFX & SWT 3
M UIManager funktioniert nicht mit Farben AWT, Swing, JavaFX & SWT 9
M Swing UIManager funktioniert nicht mit Farben AWT, Swing, JavaFX & SWT 0
T KeyListener funktioniert nicht wenn ich ein JButton hinzufüge AWT, Swing, JavaFX & SWT 1
S JavaFX wie funktioniert CSS und javaFX AWT, Swing, JavaFX & SWT 19
S KeyListener funktioniert nicht AWT, Swing, JavaFX & SWT 2
J JScrollPane funktioniert nicht AWT, Swing, JavaFX & SWT 5
M JavaFX Eventhandler Funktioniert nicht AWT, Swing, JavaFX & SWT 3
Sogomn JavaFX Injektion funktioniert nicht AWT, Swing, JavaFX & SWT 4
Blender3D Swing KeyBoardListener funktioniert nicht unter UBUNTU AWT, Swing, JavaFX & SWT 7
J JavaFX Button funktioniert(nicht) AWT, Swing, JavaFX & SWT 3
J DefaultCloseOperation funktioniert nicht AWT, Swing, JavaFX & SWT 9
F JavaFX ObservableList -- warum funktioniert das so.... AWT, Swing, JavaFX & SWT 3
R Swing Bewegung eines Graphics Objektes innerhalb eines JPanels funktioniert nicht richtig AWT, Swing, JavaFX & SWT 2
Paul15 Button funktioniert nur einmal AWT, Swing, JavaFX & SWT 9
D Swing Warum erhalte ich keine Ausgabe? Funktioniert der equals-vergleich in actionPeformed nicht richtig? AWT, Swing, JavaFX & SWT 3
H UpdatePolicy wird nicht richtig gesetzt / funktioniert nicht AWT, Swing, JavaFX & SWT 5
W Paint-Methode in anderer Klasse funktioniert nicht AWT, Swing, JavaFX & SWT 7
N KeyListener funktioniert nicht richitg AWT, Swing, JavaFX & SWT 4
L Event Handling wie funktioniert .getComponent? AWT, Swing, JavaFX & SWT 1
B JavaFX Scene Builder: resize funktioniert (meist) nicht AWT, Swing, JavaFX & SWT 6
J Swing Basics - JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 1
D Passwort [Aber mit 3 Versuchen] Funktioniert nicht wie erwartet AWT, Swing, JavaFX & SWT 4
C Applet Applet funktioniert in Eclipse aber nicht in Browser AWT, Swing, JavaFX & SWT 1
J Zellen in JavaFx einfärben funktioniert nicht AWT, Swing, JavaFX & SWT 1
S Swing Warum funktioniert der automatische Zeilenumbruch mit arabischen Zeichen beim JTextPane nicht AWT, Swing, JavaFX & SWT 3
Joew0815 JDialog repaint() funktioniert nicht wie gewünscht. AWT, Swing, JavaFX & SWT 2
C KeyPressed funktioniert auf iOS nicht richtig? AWT, Swing, JavaFX & SWT 4
D Event Handling MouseListener funktioniert seit Java 8 nicht mehr AWT, Swing, JavaFX & SWT 13
M LayoutManager GridLayout funktioniert nicht AWT, Swing, JavaFX & SWT 0
I Objekte aus contentPane löschen funktioniert nicht AWT, Swing, JavaFX & SWT 3
F JavaFX Antialiasing funktioniert nicht? AWT, Swing, JavaFX & SWT 8
F CardLayout.show() funktioniert teilweise nicht AWT, Swing, JavaFX & SWT 5
M Listener funktioniert nicht AWT, Swing, JavaFX & SWT 7
M "Update" der JTable funktioniert nicht AWT, Swing, JavaFX & SWT 2
T JAXB funktioniert ohne IDE nicht verlässlich AWT, Swing, JavaFX & SWT 12

Ähnliche Java Themen


Oben