Inkrement - /Dekrement-mit GUI(Java)
Ich soll die Implementierung einer Anwendung für die Benutzer, die hat 2 Tasten(Inkrement/Dekrement) und ein label. Wenn Inkrement gedrückt, wird die Anzahl erhöht, und verringert sich um eins, wenn Dekrement gedrückt wird. Die Nummer beginnt bei 50. Ich habe es, wo es zeigt die Tasten und Sie funktionieren, aber Sie arbeiten auf 2 verschiedenen Variablen, so ist Ihre 2 Nummer gedruckt auf dem Bildschirm statt 1. Meine Frage ist wie kann ich das button-Gesetz auf nur eine Zahl. Ich habe gesehen, dass Leute mit push-etc. aber gibt es eine andere Möglichkeit, dies zu tun, indem Sie übergeben einen Wert für beide, oder was? Dank
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ButtonModifier
{
public static void main(String[] args)
{
JFrame frame = new JFrame();
FlowLayout flow = new FlowLayout();
frame.getContentPane().setLayout(flow);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400,300);
frame.setTitle("Button Modifier");
IncrementPanel panel = new IncrementPanel();
DecrementPanel panel1 = new DecrementPanel();
frame.add(panel);
frame.add(panel1);
frame.setVisible(true);
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class DecrementPanel extends JPanel
{
private JButton button1;
private JLabel label;
private int number = 50;
public DecrementPanel()
{
button1 = new JButton("Decrement");
button1.addActionListener(new /*DecrementPanel.*/ButtonListener());
label = new JLabel("" + number);
this.add(button1);
this.add(label);
}
private class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
//int increment = 50;
number--;
label.setText("" + number);
}
}
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class IncrementPanel extends JPanel
{
private JButton button;
private JLabel label;
int number = 50;
public IncrementPanel()
{
button = new JButton("Increment");
button.addActionListener(new ButtonListener());
label = new JLabel("" + number);
this.add(button);
this.add(label);
}
private class ButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
//int increment = 50;
number++;
label.setText("" + number);
}
}
}
InformationsquelleAutor user1807844 | 2013-11-12
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dann, warum hast du zwei?
Einfach ein und ändern Sie den text auf, dass man
Sollte mehr so sein wie diese
InformationsquelleAutor Paul Samsotha
Sollten Sie eine
JLabel
angezeigt wird nur eine Nummer in Ihrem Programm.Dann Ihre beiden Schaltflächen Aktionen auf, die Anzahl und aktualisieren Sie das Etikett.
Dein Fehler ist, dass jedes Panel hat seine eigene Nummer und sein eigenes Label zur Anzeige der Nummer.
Ein wichtiger Hinweis: Swing ist nicht thread-safe, und alle Operationen mit den GUI-Komponenten muss durchgeführt werden Event Dispatch Thread. So Ihr
main
muss eigentlich so Aussehen:InformationsquelleAutor Alexey Ivanov
Werfen Sie einen Blick auf dieses Programm :
InformationsquelleAutor BilalDja
Erstellen das JLabel in der main-Funktion. Die incrementPanel und DecrementPanel Klassen-Konstruktoren nehmen einen JLabel als argument, dass Sie zu speichern, wie eine private variable. Die ButtonListeners csn auch übergeben werden, das JLabel als argument. Jetzt die Taste Hörer csn-update eine gemeinsame JLabel.
Nun, Sie können Dinge verbessern durch die Kombination der code von IncrementPanel und DecrementPanel Klassen durch übergabe eines int im Konstruktor die Angabe der Schrittweite von +1 oder -1.
Eine schnelle und schmutzige Art und Weise zu implementieren, die die Funktionalität ist durch die Verwendung von anonymen Klassen Umsetzung der button-Listener innerhalb eines einzigen monolithischen Klasse.
InformationsquelleAutor Tarik
InformationsquelleAutor Esraa Rashad