Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Ich hab ein kleines Problem bzw. eine kleine Frage.
Ich hab in Java ein Fenster generiert und dazu ein Menü, wenn man aber jedoch auf die Schaltflächen klickt, klappt das Menü wieder zu und es tut sich nichts (ist ja klar, wenn keine Funktion eingebunden wird).
Und jetzt zur Frage:
Wie ist es möglich in die Schaltflächen funktionsfähig zu machen?
Hier ist ein teil meines Codes:
Java:
...
menu = new JMenu(" Programm ");
menuItem = new JMenuItem("Info",
KeyEvent.VK_F1);
menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_F1, ActionEvent.CTRL_MASK));
menu.add(menuItem);
...
Schön ist auch die Verwendung der Klasse AbstractAction. Dort kannst du deine Funktionalität implementieren und sie an beliebe Swing Komponeten durch die Methode
Java:
setAction(...);
anbinden. Vorteil eine Actionklasse und viele Verweise auf diese Aktion. Z.B von der Menubar, vom Button, Kontextmenu, etc.
Ciao Velaluka
public class NewFormulaFileAction extends AbstractAction {
private static final long serialVersionUID = 4124908437130866620L;
/** */
private FormulaController controller;
/**
* Beim Konstruktor kannst nötiges Zeug zum arbeiten mitgeben
*/
public NewFormulaFileAction(FormulaController controller) {
super("New Formula");
super.putValue(SHORT_DESCRIPTION, "Create a new formula file");
Icon icon = new ImageIcon(getClass().getResource("/resources/newfile.png"));
super.putValue(SMALL_ICON,icon);
this.controller = controller;
}//constructor
/**
* Diese Methode wird beim Klick aufgerufen
*/
@Override
public void actionPerformed(ActionEvent e) {
controller.newFile();
}//actionPerformed
}//NewFormulaFileAction
und dann kannst das eben überall ranhängen wo du magst: Buttons, Menüs, Toolbars etc. .. Actions kann man auch global aktivieren und deaktivieren, sodass alle Komponenten denen die Action zugeordnet ist, auch den jeweiligen enabled-status bekommen
du kannst aber hier auch Dialoge aufrufen lassen oder sowas, um erst noch Eingaben zu erhaschen und diese dann weiterleiten an zB einen Controller (eigene Klasse)
es ist nicht nur mit actionlisteners, die für klicks verwendet werden, möglich,
auch für überfahren oder verlassen der maus für ein Komponent
möglich zum Beispiel hier:
Java:
final JButton b;
b = new JButton("Hallo das ist MouseListening");
b.setForeground(Color.cyan);
b.setBackground(Color.white);
b.addMouseListener(new MouseListener(){
public void mousePressed(MouseEvent e) {
}
public void mouseReleased(MouseEvent e) {
}
public void mouseEntered(MouseEvent e) {
b.setBackground(Color.blue);
}
public void mouseExited(MouseEvent e) {
b.setBackground(Color.white);
}
public void mouseClicked(MouseEvent e) {
}
});
Interessant oder?
Solche und andere "Listener" für Komponenten
kannst du im Package "java.awt.event" finden, es gibt eine reihe von Listenern, schau sie dir mal an, sie sind wirklich interessant
viel spaß, ich hoffe ich konnte helfen
*Edit
null kannst du für JOptionPanes immer verwenden wenn du keine explizites Objekt angeben möchtest. Wenn du deinen frame angeben willst, dann speicher frame als Instanzvariable.
Sorry das ich mich vorhin vielleicht etwas unklar ausgedrückt habe. Ich habe herausgefunden wie man ein Fenster mit einem Mausklick auf einem Button oder einer Schaltfläche Schließt:
Sorry das ich mich vorhin vielleicht etwas unklar ausgedrückt habe. Ich habe herausgefunden wie man ein Fenster mit einem Mausklick auf einem Button oder einer Schaltfläche Schließt:
Damit beendest du die Java Virtual Machine und dadurch dein komplettes Programm. System.exit(0); sollte niemals im normalen Programmablauf benutzt werden.
Ruf setVisible(false) auf das Fenster auf, wenn du es kurzzeitig schließen willst.
Ruf dispose() auf, wenn du das Fenster schließen und nie wieder öffnen willst. (siehe dazu die API)