Button einbinden

  • Themenstarter Themenstarter Buttonmann
  • Beginndatum Beginndatum
B

Buttonmann

Gast
Hallo,

ich habe ein Fenster in dem 2 Uhren sind eine Analoge und eine Digitale, jetzt möchte ich noch eine Stoppuhr hinzufügen die mit klicken auf einen Button gestartet und gestoppt wird und dann die Zeit anzeigt. Leider hab ich selbst nach lange Lesen nicht verstanden wie man einen Button mit ActionListener richtig implementiert, ein Button ist ja kein Problem aber der bewirkt dann leider noch nix 🙁

So siehts bis jetzt aus:

Java:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Uhren extends JFrame {
  private JButton button; 
  public Uhren() {
    super("Stoppuhr");
    
    Container contentPane = getContentPane(); 
     
    contentPane.setLayout(new BorderLayout());
    setBackground(Color.black);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  

    AnalogThread at = new AnalogThread();
    Thread a = new Thread(at);
    contentPane.add("Center",at);
    a.start();

    DigitalThread dt = new DigitalThread();
    Thread d = new Thread(dt);
    contentPane.add("South",dt);
    d.start();   
 }

  public static void main(String args[]) {
    Uhren f = new Uhren();
    f.setLocation(200,200);
    f.setSize(300,200);
    f.setVisible(true);
  }
}

Wie muss ich vorgehen um da einen Butten mit ActionListener einfügen zu können??

Sonnigegrüße
 
So jetzt hab ich schonmal den Button drinn und auch der ActionListener funktioniert für den Anfang:

Java:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import javax.swing.JButton;

public class Uhren extends JFrame {
  private JButton button; 
  public Uhren() {
    super("Stoppuhr");
    
    Container contentPane = getContentPane(); 
     
    contentPane.setLayout(new BorderLayout());
    setBackground(Color.black);

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  

    AnalogThread at = new AnalogThread();
    Thread a = new Thread(at);
    contentPane.add("Center",at);
    a.start();

    DigitalThread dt = new DigitalThread();
    Thread d = new Thread(dt);
    contentPane.add("South",dt);
    d.start();   
    
    JButton button = new JButton("Start A");
    getContentPane().add(button, BorderLayout.NORTH);

    button.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
       System.out.println("Klick");  
     }   
   });
 }

  public static void main(String args[]) {
    Uhren f = new Uhren();
    f.setLocation(200,200);
    f.setSize(300,200);
    f.setVisible(true);
  }
}

Allerdings soll der Button beim Drücken seinen Namen in Stopp ändern, das bekomm ich aber leider nicht hin hab schon ein paar beispiele angeschaut aber das klappt bei mir nicht 🙁

so wäre es toll:

Java:
 private void changeButtonActionPerformed(ActionEvent evt) {
                if (timer == null) {
                    btn.setText("Start");
                   
                } else {
                    btn.setText("Stopp");
                   
                }
            }

Aber da gibts probleme weil ich das ales innere Klasse realisiert habe :/
 
Naja, entweder Button final machen oder aber in Zeile 28:
[java=28]
button = new JButton("Start A");
[/code]

Du hast ja oben schon den Button deklariert..jetzt überdeckst du bei dir den quasi mit der lokalen Variable...
 
Zuletzt bearbeitet:
also das ganze ist recht simpel.

[Java]
final JButton button = new JButton("Start A");
getContentPane().add(button, BorderLayout.NORTH);

button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(button.equals("Start A")) {
button.setText("Stop A");
} else {
button.setText("Start A");
}
}
});
[/code]
 

Neue Themen


Zurück
Oben