# Button ohne Rahmen



## bronkowitz (29. Aug 2009)

Hallo!

ich versuche verzweifelt einen Button ohne Rahmen hinzukriegen, der trotzdem sein Erscheinungsbild ändert, wenn man mit der Maus drübergeht. Beispiele: Die Buttons in NetBeans, oder Firefox u.v.a.
Ich habe bereits die Farbe der Hintergrundfarbe angepasst, das hat schon mal den äußeren Rahmen unsichtbar gemacht. Wenn man dann den Button ohne Border macht, gibts kein "Mouseover"-Verhalten mehr.
Hab im Forum und Google gesucht, mit setMargin und setContentAreaFilled experimentiert, aber es läuft immer darauf hinaus, dass eines davon nicht funktioniert.

Gruß
bronkowitz


```
package testprojekt;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JToolBar;
import javax.swing.WindowConstants;

public class Main {
    public static void main(String[] args) {
        hauptfenster = new Hauptfenster();
        hauptfenster.pack();
        hauptfenster.setVisible(true);
    }
    
    private static Hauptfenster hauptfenster;
}

class Hauptfenster extends JFrame {

    private JToolBar toolbar;
    private JButton buttonBeenden;
    private ImageIcon iconBeenden;

    public Hauptfenster(){
        super();

        toolbar = new JToolBar();
        this.add(toolbar,BorderLayout.NORTH);
        Color background = new Color(238,238,238);
        toolbar.setBackground(background);
        toolbar.setLayout(new FlowLayout(FlowLayout.LEFT));
        toolbar.setFloatable(false);

        // Button Beenden
        iconBeenden = new ImageIcon(getClass().getResource("/icons/exit.png"));
        buttonBeenden = new JButton(iconBeenden);
        buttonBeenden.setMargin(new Insets(0,0,0,0));
        //buttonBeenden.setBorder(null);
        buttonBeenden.setBackground(background);
        buttonBeenden.setContentAreaFilled(false);
        buttonBeenden.setActionCommand("beenden");
        buttonBeenden.addActionListener(new ButtonAktion());
        buttonBeenden.setEnabled(true);
        toolbar.add(buttonBeenden);

        this.pack();
        validate();
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        }

    private class ButtonAktion implements ActionListener{
        public void actionPerformed(ActionEvent e){
            String command = e.getActionCommand();

            // Button Ende
            if (command.equals(buttonBeenden.getActionCommand()))
            {
                System.exit(0);
            }
        }
    }

}
```


----------



## Guybrush Threepwood (29. Aug 2009)

```
button.setBackground(null);
		button.setBorder(null);
		button.setBorderPainted(false);
```

... oder so ähnlich.

Für den MouseOver-Effekt:

```
button.setRolloverEnabled(true);
		button.setRolloverIcon(new ImageIcon(this.getClass().getClassLoader()
				.getResource("img/rollover.png")));
```


----------



## bronkowitz (29. Aug 2009)

ok, das funktioniert - vielen Dank schonmal! Das heisst also, dass man gezwungen ist, ein zweites Icon zu erstellen, um das Mouseover-Verhalten zu bekommen, wenn man keinen Rahmen haben will?


----------



## Guybrush Threepwood (29. Aug 2009)

Ja, da ja alles andere nicht mehr sichtbar ist.


----------

