Java JButton und ActionListener

Posted: Mai 16th, 2012 | Filed under: Allgemein, Java, Programmieren, Tutorials | Tags: , , , , , , , | No Comments »

Hier ein kleines Beispiel für alle Java Swing Neulinge. Mit Hilfe eines ActionListeners könnt ihr Klicks auf einen JButton abfangen. Funktioniert natürlich auch, falls ihr die Schaltfläche mit der Tastatur auslöst (zum Beispiel bei Focus mit Hilfe der Leertaste).

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class JButtonExample implements ActionListener{
    
    private JButton button;

    public JButtonExample() {
        // Fenster anlegen
        JFrame frame = new JFrame();
        frame.setTitle("JButton Example");
        frame.setLayout(new BorderLayout());
        
        // Button anlegen
        this.button = new JButton("OK");

        // Eventhandler für Button zuweisen
        this.button.addActionListener(this);
        
        // Button der Frame hinzufügen
        frame.add(this.button);
        
        // Fenster zentrieren
        frame.setSize(350,150);
        frame.setLocationRelativeTo(null);
        
        // Fenster sichbar machen
        frame.setVisible(true);
    }
    
    public static void main(String[] args) {
        new JButtonExample();
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if(button == e.getSource()){
            System.out.println("Button wurde geklickt!");
        }
    }
}

Ich hoffe ich konnte dem ein oder anderen mit diesem Tutorial helfen =)


Java JButton mit Hover-Effekt

Posted: November 17th, 2011 | Filed under: Java, Programmieren | Tags: , , , , , , , | No Comments »

Öfters verwende ich in  meinen Programmen einen Button der sein Icon ändert sobald man mit der Maus über diesen fährt. Also ein JButton mit Hover-Effekt. Die folgende Klasse implementiert diese Funktionalität von Haus aus. Beim Konstruktoraufruf können zwei ImageIcons übergeben werden.

Hier die Klasse JButtonHoverable.java:

package de.roth.jsona.view.button;

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

import javax.swing.ImageIcon;
import javax.swing.JButton;

public class JButtonHoverable extends JButton{

   private ImageIcon imageIconHovered;
   private ImageIcon imageIcon;
   private boolean hoverable;
   
   public JButtonHoverable(ImageIcon imageIcon, ImageIcon imageIconHovered, String text){
      super(imageIcon);
      this.hoverable = true;
      this.imageIconHovered = imageIconHovered;
      this.imageIcon = imageIcon;
      this.setText(text);
      this.addHoverMouseListener();   
   }
   
   public JButtonHoverable(ImageIcon imageIcon, ImageIcon imageIconHovered){
      super(imageIcon);
      this.hoverable = true;
      this.imageIconHovered = imageIconHovered;
      this.imageIcon = imageIcon;
      this.addHoverMouseListener();
   }

   public ImageIcon getImageIconHovered() {
      return imageIconHovered;
   }

   public ImageIcon getImageIcon() {
      return imageIcon;
   }
   
   public void setHoverable(boolean hoverable){
      this.hoverable = hoverable;
   }
   
   private void addHoverMouseListener(){
      this.      
      addMouseListener(new MouseAdapter(){
         public void mouseEntered(MouseEvent e) {
            if(hoverable){
               JButtonHoverable button = ((JButtonHoverable)e.getSource());
               button.setIcon(button.getImageIconHovered());               
            }
         }
         
         public void mouseExited(MouseEvent e) {
            JButtonHoverable button = ((JButtonHoverable)e.getSource());
            button.setIcon(button.getImageIcon());
         }
      });
   }
}

Und so wird die Klasse verwendet:

JButtonHoverable buttonHoverable = new JButtonHoverable(new ImageIcon(
      getClass().getClassLoader().getResource(
            "de/roth/icon/blau.png"))new ImageIcon(
      getClass().getClassLoader().getResource(
            "de/roth/icon/rot.png")));