JButton: Unterschied zwischen den Versionen
KKeine Bearbeitungszusammenfassung |
|||
| (11 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
| Zeile 4: | Zeile 4: | ||
=JButton mit Text= | =JButton mit Text= | ||
< | <syntaxhighlight lang="java"> | ||
//Ein einfacher JButton | //Ein einfacher JButton | ||
JButton button = new JButton("Funktion"); | JButton button = new JButton("Funktion"); | ||
</ | </syntaxhighlight> | ||
[[Datei:JButton.png]] | |||
=JButton mit Icon= | =JButton mit Icon= | ||
{{JAPI|JButton}}s können auch Bilder bzw. Icons haben, die eine Funktion etwas mehr illustrieren. | {{JAPI|JButton}}s können auch Bilder bzw. Icons haben, die eine Funktion etwas mehr illustrieren. | ||
Zum Laden von Bildern gibt es in Java verschiedene Möglichkeiten, die im Artikel [[Grafikdateien laden und anzeigen (Java)]] beschrieben sind. | Zum Laden von Bildern gibt es in Java verschiedene Möglichkeiten, die im Artikel [[Grafikdateien laden und anzeigen (Java)]] beschrieben sind. | ||
Am häufigsten kommen für JButtons die [http://wiki.byte-welt.net/wiki/Grafikdateien_laden_und_anzeigen_(Java)#ImageIcon | Am häufigsten kommen für JButtons die [http://wiki.byte-welt.net/wiki/Grafikdateien_laden_und_anzeigen_(Java)#ImageIcon im Abschnitt ImageIcon] beschriebenen Varianten in einem Java-Programm zum Einsatz. | ||
Demnach kann ein Button so mit einem Icon versehen werden: | Demnach kann ein Button so mit einem Icon versehen werden: | ||
< | <syntaxhighlight lang="java"> | ||
//Ein JButton mit Icon | //Ein JButton mit Icon | ||
ImageIcon icon = new ImageIcon(getClass().getResource("MeinIcon.png")); | ImageIcon icon = new ImageIcon(getClass().getResource("MeinIcon.png")); | ||
JButton button = new JButton("Funktion", icon); | JButton button = new JButton("Funktion", icon); | ||
</ | </syntaxhighlight> | ||
[[Datei:JButton_mit_Icon.png]] | |||
=JButton mit Icon über dem Text= | =JButton mit Icon über dem Text= | ||
Damit ein {{JAPI|JButton}} das Icon über dem Text anzeigt ist folgender Code zu schreiben: | Damit ein {{JAPI|JButton}} das Icon über dem Text anzeigt ist folgender Code zu schreiben: | ||
< | <syntaxhighlight lang="java"> | ||
button.setVerticalTextPosition(SwingConstants.BOTTOM); | button.setVerticalTextPosition(SwingConstants.BOTTOM); | ||
button.setHorizontalTextPosition(SwingConstants.CENTER); | button.setHorizontalTextPosition(SwingConstants.CENTER); | ||
</ | </syntaxhighlight> | ||
[[Datei:Button_mit_Icon_ueber_Text.png]] | |||
=Ereignisverarbeitung= | =Ereignisverarbeitung= | ||
| Zeile 34: | Zeile 39: | ||
Dabei unterscheiden wir zwischen den am häufigsten benutzen Varianten: | Dabei unterscheiden wir zwischen den am häufigsten benutzen Varianten: | ||
<div style="background-color: lightcyan; border:2px solid; border-color: lightblue; width: 500px; padding: 2em 1em 2em 1em; line-height: 2em;"> | <div style="background-color: lightcyan; border:2px solid; border-color: lightblue; width: 500px; padding: 2em 1em 2em 1em; line-height: 2em;"> | ||
#Der ActionListener ist die Klasse, die auch den JButton einbettet | |||
#Eine anonyme (innere) Klasse implementiert den ActionLister | |||
#Eine normale Klasse implementiert den ActionListener | |||
#Dem Button wird eine Instanz einer {{JAPI|AbstractAction}} übergeben | |||
</div> | </div> | ||
==Beispiel mit ActionListener== | ==Beispiel mit ActionListener== | ||
< | <syntaxhighlight lang="java"> | ||
import javax.swing.JPanel; | import javax.swing.JPanel; | ||
import javax.swing.JButton; | import javax.swing.JButton; | ||
| Zeile 66: | Zeile 69: | ||
} | } | ||
} | } | ||
</ | </syntaxhighlight> | ||
==Beispiel mit anonymer (inneren) Klasse== | ==Beispiel mit anonymer (inneren) Klasse== | ||
< | <syntaxhighlight lang="java"> | ||
import javax.swing.JPanel; | import javax.swing.JPanel; | ||
import javax.swing.JButton; | import javax.swing.JButton; | ||
| Zeile 94: | Zeile 97: | ||
} | } | ||
} | } | ||
</ | </syntaxhighlight> | ||
==Beispiel mit normaler Klasse== | ==Beispiel mit normaler Klasse== | ||
| Zeile 100: | Zeile 103: | ||
Ein JPanel, das den JButton enthält: | Ein JPanel, das den JButton enthält: | ||
< | <syntaxhighlight lang="java"> | ||
import javax.swing.JPanel; | import javax.swing.JPanel; | ||
import javax.swing.JButton; | import javax.swing.JButton; | ||
| Zeile 117: | Zeile 120: | ||
} | } | ||
} | } | ||
</ | </syntaxhighlight> | ||
...und die Klasse, die den {{JAPI|ActionListener}} implementiert: | ...und die Klasse, die den {{JAPI|ActionListener}} implementiert: | ||
< | <syntaxhighlight lang="java"> | ||
import java.awt.event.ActionListener; | import java.awt.event.ActionListener; | ||
import java.awt.event.ActionEvent; | import java.awt.event.ActionEvent; | ||
| Zeile 136: | Zeile 139: | ||
} | } | ||
</ | </syntaxhighlight> | ||
==Beispiel mit AbstractAction== | ==Beispiel mit AbstractAction== | ||
Hier werden zwei von einander | Hier werden zwei von einander getrennte Klassen gebaut. | ||
Ein JPanel, das den JButton enthält: | Ein JPanel, das den JButton enthält: | ||
< | <syntaxhighlight lang="java"> | ||
import javax.swing.JPanel; | import javax.swing.JPanel; | ||
import javax.swing.JButton; | import javax.swing.JButton; | ||
| Zeile 158: | Zeile 161: | ||
} | } | ||
} | } | ||
</ | </syntaxhighlight> | ||
...und die Klasse, die {{JAPI|AbstractAction}} erweitert: | ...und die Klasse, die {{JAPI|AbstractAction}} erweitert: | ||
< | <syntaxhighlight lang="java"> | ||
import javax.swing.event.AbstractAction; | import javax.swing.event.AbstractAction; | ||
| Zeile 176: | Zeile 179: | ||
} | } | ||
} | } | ||
</ | </syntaxhighlight> | ||
=Links= | =Links= | ||
*[http://docs.oracle.com/javase/tutorial/uiswing/components/button.html Oracle - Swing Tutorial - How To Use JButtons?] | *[http://docs.oracle.com/javase/tutorial/uiswing/components/button.html Oracle - Swing Tutorial - How To Use JButtons?] | ||
*[https://docs.oracle.com/javase/tutorial/uiswing/misc/action.html Oracle - Swing Tutorial - How to Use Actions?] | |||
*[[LookAndFeel des Betriebssystems setzen]] | |||
{{Fragen stellen}} | |||
[[Kategorie:Java]] | [[Kategorie:Java-Codeschnipsel]] | ||
[[Kategorie:Swing]] | [[Kategorie:Swing]] | ||
[[Kategorie:Tutorials (Java)]] | |||
Aktuelle Version vom 10. April 2020, 10:50 Uhr
Buttons dienen in einer GUI dazu, um Benutzeraktionen in Programmreaktionen umzuwandeln.
Ein Benutzer klickt auf einen Button, das Programm führt die gewünschte Aktion aus.
JButton mit Text
[Bearbeiten | Quelltext bearbeiten]//Ein einfacher JButton
JButton button = new JButton("Funktion");
JButton mit Icon
[Bearbeiten | Quelltext bearbeiten]JButtons können auch Bilder bzw. Icons haben, die eine Funktion etwas mehr illustrieren.
Zum Laden von Bildern gibt es in Java verschiedene Möglichkeiten, die im Artikel Grafikdateien laden und anzeigen (Java) beschrieben sind.
Am häufigsten kommen für JButtons die im Abschnitt ImageIcon beschriebenen Varianten in einem Java-Programm zum Einsatz.
Demnach kann ein Button so mit einem Icon versehen werden:
//Ein JButton mit Icon
ImageIcon icon = new ImageIcon(getClass().getResource("MeinIcon.png"));
JButton button = new JButton("Funktion", icon);
JButton mit Icon über dem Text
[Bearbeiten | Quelltext bearbeiten]Damit ein JButton das Icon über dem Text anzeigt ist folgender Code zu schreiben:
button.setVerticalTextPosition(SwingConstants.BOTTOM);
button.setHorizontalTextPosition(SwingConstants.CENTER);
Ereignisverarbeitung
[Bearbeiten | Quelltext bearbeiten]Der Mausklick auf einen JButton löst ein ActionEvent aus, das nähere Informationen zum Ereignis enthält. Damit das funktioniert muss am JButton ein ActionListener registriert sein.
Dabei unterscheiden wir zwischen den am häufigsten benutzen Varianten:
- Der ActionListener ist die Klasse, die auch den JButton einbettet
- Eine anonyme (innere) Klasse implementiert den ActionLister
- Eine normale Klasse implementiert den ActionListener
- Dem Button wird eine Instanz einer
AbstractActionübergeben
Beispiel mit ActionListener
[Bearbeiten | Quelltext bearbeiten]import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class MyPanel extends JPanel implements ActionListener {
private JButton button;
public MyPanel() {
button = new JButton("Klick mich!");
button.addActionListener(this);
add(button);
}
public void actionPerformed(ActionEvent e) {
doSomething();
}
private void doSomething() {
System.out.println("Button wurde geklickt!");
}
}
Beispiel mit anonymer (inneren) Klasse
[Bearbeiten | Quelltext bearbeiten]import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class MyPanel extends JPanel {
private JButton button;
public MyPanel() {
button = new JButton("Klick mich!");
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
doSomething();
}
});
add(button);
}
private void doSomething() {
System.out.println("Button wurde geklickt!");
}
}
Beispiel mit normaler Klasse
[Bearbeiten | Quelltext bearbeiten]Hier werden zwei von einander getrennte Klassen gebaut.
Ein JPanel, das den JButton enthält:
import javax.swing.JPanel;
import javax.swing.JButton;
public class MyPanel extends JPanel {
private JButton button;
public MyPanel() {
button = new JButton("Klick mich!");
button.addActionListener(new MyActionListener(this));
add(button);
}
public void doSomething() {
System.out.println("Button wurde geklickt!");
}
}
...und die Klasse, die den ActionListener implementiert:
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class MyActionListener implements ActionListener {
private MyPanel panel;
public MyActionListener(MyPanel panel) {
this.panel = panel;
}
public void actionPerformed(ActionEvent e) {
panel.doSomething();
}
}
Beispiel mit AbstractAction
[Bearbeiten | Quelltext bearbeiten]Hier werden zwei von einander getrennte Klassen gebaut.
Ein JPanel, das den JButton enthält:
import javax.swing.JPanel;
import javax.swing.JButton;
public class MyPanel extends JPanel {
private JButton button;
public MyPanel() {
button = new JButton(new MyAction("Klick mich!", this));
add(button);
}
public void doSomething() {
System.out.println("Button wurde geklickt!");
}
}
...und die Klasse, die AbstractAction erweitert:
import javax.swing.event.AbstractAction;
public class MyAction extends AbstractAction {
private MyPanel panel;
public MyAction(String text, MyPanel panel) {
super(text);
this.panel = panel;
}
public void actionPerformed(ActionEvent e) {
panel.doSomething();
}
}
Links
[Bearbeiten | Quelltext bearbeiten]- Oracle - Swing Tutorial - How To Use JButtons?
- Oracle - Swing Tutorial - How to Use Actions?
- LookAndFeel des Betriebssystems setzen
Fragen
[Quelltext bearbeiten]Das Thema wurde nicht ausreichend behandelt? Du hast Fragen dazu und brauchst weitere Informationen? Lass Dir von uns helfen!
- Besuche uns im Byte-Welt-Forum
- Besuche unseren Chat
Wir helfen dir gerne!
Dir hat dieser Artikel gefallen? Oder Du hast Fehler entdeckt und möchtest zur Berichtigung beitragen? Prima! Schreibe einen Kommentar!
Du musst angemeldet sein, um einen Kommentar abzugeben.
