Zifferneingabe als Bean

francisca93

Mitglied
Hallo,
ich soll eine Zifferneingabe programmieren, bei der die Eingabe der Ziffern 0-9 auf einem Textfield erscheinen. War auch kein großes Problem, das hinzubekommen.
Der Haken an der Sache: Das Programm soll den Standards für Java Beans entsprechen. Weiß jemand, wie man das möglichst einfach hinbekommen kann, ohne zuviel ändern zu müssen?
Hier das Programm:

Code:
package praktikum_8;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Font;

public class Praktikum_8 extends JFrame {

    private JPanel contentPane;
    private JTextField textField;
    private JButton btn7;
    private JButton btn8;
    private JButton btn9;
    private JButton btn4;
    private JButton btn5;
    private JButton btn6;
    private JButton btn1;
    private JButton btn2;
    private JButton btn3;
    private JButton btnC;
    private JButton btn0;
    private JButton btnPunkt;
    private JButton btnVorzeichen;

    boolean negative = false;
    boolean punkt_gesetzt = false;
  
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Praktikum_8 frame = new Praktikum_8();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public Praktikum_8() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 450, 300);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
      
        textField = new JTextField();
        textField.setHorizontalAlignment(JTextField.RIGHT);
        textField.setBounds(12, 12, 338, 28);
        contentPane.add(textField);
        textField.setColumns(10);
      
        btn7 = new JButton("7");
        btn7.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText()+"7");
            }
        });
        btn7.setFont(new Font("Dialog", Font.BOLD, 16));
        btn7.setBounds(12, 52, 98, 38);
        contentPane.add(btn7);
      
        btn8 = new JButton("8");
        btn8.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText()+"8");
            }
        });
        btn8.setFont(new Font("Dialog", Font.BOLD, 16));
        btn8.setBounds(132, 52, 98, 38);
        contentPane.add(btn8);
      
        btn9 = new JButton("9");
        btn9.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText()+"9");
            }
        });
        btn9.setFont(new Font("Dialog", Font.BOLD, 16));
        btn9.setBounds(252, 52, 98, 38);
        contentPane.add(btn9);
      
        btn4 = new JButton("4");
        btn4.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText()+"4");
            }
        });
        btn4.setFont(new Font("Dialog", Font.BOLD, 16));
        btn4.setBounds(12, 102, 98, 38);
        contentPane.add(btn4);
      
        btn5 = new JButton("5");
        btn5.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText()+"5");
            }
        });
        btn5.setFont(new Font("Dialog", Font.BOLD, 16));
        btn5.setBounds(132, 102, 98, 38);
        contentPane.add(btn5);
      
        btn6 = new JButton("6");
        btn6.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText()+"6");
            }
        });
        btn6.setFont(new Font("Dialog", Font.BOLD, 16));
        btn6.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
            }
        });
        btn6.setBounds(252, 102, 98, 38);
        contentPane.add(btn6);
      
        btn1 = new JButton("1");
        btn1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText()+"1");
            }
        });
        btn1.setFont(new Font("Dialog", Font.BOLD, 16));
        btn1.setBounds(12, 152, 98, 38);
        contentPane.add(btn1);
      
        btn2 = new JButton("2");
        btn2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText()+"2");
            }
        });
        btn2.setFont(new Font("Dialog", Font.BOLD, 16));
        btn2.setBounds(132, 152, 98, 38);
        contentPane.add(btn2);
      
        btn3 = new JButton("3");
        btn3.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText()+"3");
            }
        });
        btn3.setFont(new Font("Dialog", Font.BOLD, 16));
        btn3.setBounds(252, 152, 98, 38);
        contentPane.add(btn3);
      
        btnC = new JButton("C");
        btnC.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText("");
                negative = false;
                punkt_gesetzt = false;
            }
        });
        btnC.setFont(new Font("Dialog", Font.BOLD, 16));
        btnC.setBounds(362, 202, 46, 38);
        contentPane.add(btnC);
      
        btn0 = new JButton("0");
        btn0.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                textField.setText(textField.getText()+"0");
            }
        });
        btn0.setFont(new Font("Dialog", Font.BOLD, 16));
        btn0.setBounds(12, 202, 98, 38);
        contentPane.add(btn0);
      
        btnPunkt = new JButton(".");
        btnPunkt.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (punkt_gesetzt == false)
                        textField.setText(textField.getText()+".");
                punkt_gesetzt = true;
            }
        });
        btnPunkt.setFont(new Font("Dialog", Font.BOLD, 16));
        btnPunkt.setBounds(132, 202, 98, 38);
        contentPane.add(btnPunkt);
      
        btnVorzeichen = new JButton("+/-");
        btnVorzeichen.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (negative == false) negative = true;
                    else negative = false;
                if (negative == true)
                    textField.setText("-" + textField.getText());
                if (negative == false)
                    textField.setText(textField.getText().substring(1, textField.getText ().length()));
            }
        });
        btnVorzeichen.setFont(new Font("Dialog", Font.BOLD, 16));
        btnVorzeichen.setBounds(252, 202, 98, 38);
        contentPane.add(btnVorzeichen);
    }
}
 

francisca93

Mitglied
Nicht so genau, aber es soll ja ein parameterloser Konstruktor drin sein, den hab ich ja schon (public Praktikum_8()).
Und dann müssten jetzt noch "get" und "set" Methoden rein?
 

Flown

Administrator
Mitarbeiter
Also aus der Wikipediaseite zitiert (HIER):
Code:
* Öffentlicher parameterloser Konstruktor
* Serialisierbarkeit (Serializable)
* Öffentliche Zugriffsmethoden (Public Getters/Setters)
 

francisca93

Mitglied
Naja, das hilft mir ehrlich gesagt nicht wirklich weiter. Wie muss ich das Programm denn abändern, damit es "serializable" wird, falls es das jetzt noch nicht ist? Bin leider noch Anfängerin...
 

francisca93

Mitglied
Also ich hab jetzt einfach die Zeile

public class Praktikum_8 extends JFrame

umgeschrieben in:

public class Praktikum_8 extends JFrame implements Serializable

und oben noch: import java.io.Serializable;

Ist das dann jetzt so o.k.?
 

Flown

Administrator
Mitarbeiter
Ich kenn zwar deinen Kontext nicht, wie deine Aufgabe lautet, aber jedes Attribut sollte ein getter und setter (öffentliche) aufweisen, dann ist es eine Bean nach JavaBean Standard.
 

francisca93

Mitglied
Die Aufgabe ist nur eine Zifferneingabe, mit Punkt und +/- , das soll im Textfield ausgegeben werden. Ohne weitere Funktionalität. Funktioniert ja auch alles schon perfekt mit dem Programm oben. Es kommt eben nur hinzu, dass es eine Bean sein soll.

Also die Attribute in der Klasse sind ja
Code:
   boolean negative = false;
   boolean punkt_gesetzt = false;

- und da müssten jetzt noch eine getter- und eine setter-Methode hinzu?

Tut mir leid, wenn meine Fragen trivial erscheinen, aber unser Seminar ist didaktisch die reine Katastrophe, da ist jedes Youtube-Tutorial von zwölfjährigen Hobbyprogrammierern hilfreicher.
 

mrBrown

Super-Moderator
Mitarbeiter
Ein Refactoring wäre da sicher nicht fehl am Platz - viel Logik ist da aber nicht drin, im wesentlichen nur das, was für die Erzeugung eines validen Objekts nötig ist
 

Ähnliche Java Themen

Neue Themen


Oben