# JButton reagiert erst beim 2 klick



## Freak (12. Mai 2009)

hi hab ein problem mit meinem button er reagiert erst beim 2. klick was ich gar nicht verstehe, sollte 
eig. schon beim ersten klick einen rahmen zeichnen

thx 4 help


```
import java.awt.Color;
import java.awt.Graphics;

import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JButton;
import javax.swing.JFrame;

public class iconRahmen extends JFrame {

	private static final long serialVersionUID = 1L;
	
	JFrame f = new JFrame();
	JButton b = new JButton();

	int x = 12;

	public static void main(String[] args) {
		new iconRahmen();
	}

	public iconRahmen() {
		
		f.setLayout(null);
		f.setSize(800, 600);

		b.setBounds(50, 50, 60, 60);

		b.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent event) {
				Graphics g = f.getContentPane().getGraphics();	
				g.setColor(Color.red);
				g.drawRect(b.getX() - (x / 2), b.getY() - (x / 2), b.getWidth()
						+ x, b.getHeight() + x);
			}
		});

		f.add(b);
		f.setVisible(true);
	}
}
```


----------



## SlaterB (12. Mai 2009)

NIE getGraphics() aufrufen,
siehe deinen letzten Thread, wenn auch schon ne Weile her 

http://www.java-forum.org/allgemein...e-zeigt-hintergrund-und-nicht-den-inhalt.html

die dort geposteten Programme bitte inhaltlich berücksichtigen, paintComponent() usw.


----------



## Freak (12. Mai 2009)

ich hab mir das mal gründlich angeschaut komme aber nicht zu einem ergebniss wie ich JPanel ohne getGraphics g herumzeichnen kann

wäre mit dem kürzesten stichwort sehr zufrieden


----------



## SlaterB (12. Mai 2009)

Quellcode posten,

z.B. könnte das gute JPanel zu klein sein, um überhaupt angezeigt zu werden


----------



## Freak (12. Mai 2009)

Quellcode steht eh oben am anfang der seite beim ersten post^^


----------



## Wildcard (12. Mai 2009)

Hier steht wie man's macht:
http://www.java-forum.org/awt-swing...tstelle-fuer-gui-programmierung-tutorial.html
Übrigens ist es blödsinn gleichzeitig ein JFrame zu sein und einen JFrame zu haben. Das eine, oder das andere.


----------



## SlaterB (12. Mai 2009)

> Quellcode steht eh oben am anfang der seite beim ersten post^^ 

QuellCode von dem neuen Programm mit JPanel und paintComponent usw.,
wenn du das noch gar nicht hast: im anderen Thread sind doch wie gesagt fertige Beispiele,
was sollte man noch mehr posten?


----------



## max40 (12. Mai 2009)

warum verwendest du einen MousListener ? 
Normalerweise verwendet man einen ActionListener?!


----------



## Dragonfire (12. Mai 2009)

Also ich würde eine boolesche Variable deklarieren.
Beim Klicken auf den Button wird diese auf "true" gesetzt
und um einen repaint gebeten.

Du musst dann noch die paintComponent überschreiben,
dass diese bei "true" deine Zeichenarbeit ausführt.

So sparst du dir dein getGraphics
und zeichnest passiv ...

PS.:

Lies dir ruhig mehrmals das folgende Tutorial durch,
ich kann es nur empfehlen:

http://www.java-forum.org/awt-swing-swt/43939-zeichnen-schnittstelle-fuer-gui-programmierung-tutorial.html


----------

