# Button erscheinen wenn der Mauszeiger drüberfährt



## Lephty (31. Aug 2010)

hallo, bin neu  	

hab im zweiten semester C++ gehabt , jetzt versuch ich mich mit java auszuprobieren
hab so einen kurs gemacht, und mir Literatur :rtfm: besorgt
jetzt will ich ein kleines programm schreiben, mit dem man Transistoren berechnen kann
halt nur ein kleines projekt um das gelernte anzuwenden

bin im moment dabei den GUI aufzubauen, mein problem ist halt dass die Buttons nicht richtig gezeichnet werden, erst wenn ich mit der Maus drüber fahre, 

ich brauch noch einen weiteren hint, wie kann ich die images(mit skalierung) als objekte behandeln und beispielsweise in einem gridlayout verwenden? :reflect:

bitte helft mir 


```
package javaapplication29;
import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.applet.*;
import java.io.*;
import javax.imageio.*;

class TestFrame extends JFrame{

    public void paint(Graphics screen) {
    Image img1 = Toolkit.getDefaultToolkit().getImage("c:/transistor1.png");
Image img2 = Toolkit.getDefaultToolkit().getImage("c:/transistor2.png");
Image img3 = Toolkit.getDefaultToolkit().getImage("c:/transistor3.png");
screen.drawImage(img1, 50,100, this);
screen.drawImage(img2, 450,100, this);
screen.drawImage(img3, 740,100, this);
    }
public static void main(String[] args) {

JFrame F=new TestFrame();
F.setSize(1000,500);
F.setLayout(null);
F.getContentPane().setBackground(Color.white);
F.setVisible(true);
F.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton Button1=new JButton("Transistor1");
JButton Button2=new JButton("Transistor2");
JButton Button3=new JButton("Transistor3");
Button1.setBounds(50,400,100,25);
Button2.setBounds(450,400,100,25);
Button3.setBounds(730,400,100,25);
F.add(Button1);
F.add(Button2);
F.add(Button3);
    }
}
```


----------



## faetzminator (31. Aug 2010)

Ruf manuell [c]repaint()[/c] auf. Oder [c]setVisible(true)[/c] erst am Schluss...


----------



## AmunRa (31. Aug 2010)

setz das setVisible(true) an die letzte stelle also nach F.add (Button3)


----------



## XHelp (31. Aug 2010)

Hm, du könntest dir in der Galileo Computing :: Java ist auch eine Insel (8. Auflage) die Kapitel zur GUI durchlesen.
Vor allem über die Verwendung von Layoutmanager.
Und die setVisible-Methode solltest du am Ende aufrufen.
... und Variablennamen klein schreiben


----------



## Lephty (31. Aug 2010)

habs jetzt folgendermaßen gemacht, sieht eventuell besser aus

aber es werden immernoch die Buttons erst angezeigt wenn ich mit der maus drüberfahre...hm
was könnte die lösung sein ? :reflect: 

ich nutze NetBeans ,...


```
package javaapplication29;
import java.util.*;
import javax.swing.*;
import java.awt.*;
import java.applet.*;
import java.io.*;
import javax.imageio.*;

class TestFrame extends JFrame{
public void initgui(){
JFrame f=new TestFrame();
f.setSize(1000,500);
f.setLayout(null);
f.getContentPane().setBackground(Color.white);

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button1=new JButton("Transistor1");
JButton button2=new JButton("Transistor2");
JButton button3=new JButton("Transistor3");
button1.setBounds(50,400,100,25);
button2.setBounds(450,400,100,25);
button3.setBounds(730,400,100,25);
f.add(button1);
f.add(button2);
f.add(button3);
f.setVisible(true);
f.repaint();

}
    public void paint(Graphics screen) {
    Image img1 = Toolkit.getDefaultToolkit().getImage("c:/transistor1.png");
Image img2 = Toolkit.getDefaultToolkit().getImage("c:/transistor2.png");
Image img3 = Toolkit.getDefaultToolkit().getImage("c:/transistor3.png");
screen.drawImage(img1, 50,100, this);
screen.drawImage(img2, 450,100, this);
screen.drawImage(img3, 740,100, this);

    }
public static void main(String[] args) {
TestFrame f=new TestFrame();
f.initgui();

    }
}
```


----------



## XHelp (31. Aug 2010)

Die Lösung könnte sein es wie folgt zu machen:
[JAVA=30]
public void paint(Graphics screen) {
  super.paint(screen);
  Image img1 = Toolkit.getDefaultToolkit().getImage("c:/transistor1.png");
  ...
[/code]

Und schau dir Literatur zur Vererbung an. Von JFrame abzuleiten und dann noch einen zu erstellen ergibt keinen Sinn.


----------



## Lephty (31. Aug 2010)

fetzt danke ^^ das hat geklappt , das motiviert 

ich weiß , ich hab während des umfriemelns schon überlegt wie ich das vermeide, schau ich mir morgen früh direkt an wie das geht 
ich kann ja mal das fertige projekt dann posten ^^

und ist netbeans nicht so gut , söllt ich noch schnell zu eclipse wechseln??????


----------



## XHelp (31. Aug 2010)

Lephty hat gesagt.:


> und ist netbeans nicht so gut , söllt ich noch schnell zu eclipse wechseln??????



Willst du etwa eine Diskussion ala Windows vs. Linux anfangen? 
Wenn du mit Netbeans zurecht kommst, dann bleib da. Oder installier Eclipse und schau dir das mal paar Tage lang an.
Ich selber habe den Thread hier: http://www.java-forum.org/ides-tools/8-welche-ide-bevorzugt.html nicht gelesen, aber kam es bestimmt zu einer Diskussion darüber.


----------



## Lephty (31. Aug 2010)

nungut


----------

