So implementieren Sie den documentlistener

Ich habe einige Textfelder erstellt, aus denen ich die Benutzereingabe verwenden möchte. Ich habe gelesen, dass ich einen Dokumentenlistener verwenden sollte, aber ich habe einige Schwierigkeiten, ihn an der richtigen Stelle umzusetzen, von der ich denke.

Im Code versuche ich, es in das Textfeld tf1 zu implementieren. Die Eingabe, die ich bekommen soll, soll zu einem Double geparst werden, damit ich etwas mathematische Berechnung darauf machen kann.

Hier ist mein Code, in dem ich versuche, ihn zu implementieren.

import java.awt.ComponentOrientation;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;


public class Display {
final static boolean shouldFill = true;
final static boolean shouldWeightX = true;
final static boolean RIGHT_TO_LEFT = false;

public static void addComponentsToPane(Container pane) {

    if (RIGHT_TO_LEFT) {
        pane.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
    }
    JButton button;
    JLabel label;

    pane.setLayout(new GridBagLayout());
    GridBagConstraints c = new GridBagConstraints();
    if (shouldFill) {
    //natural height, maximum width
    c.fill = GridBagConstraints.HORIZONTAL;
    }
    if (shouldWeightX) {
    c.weightx = 0.5;
    }

    ...

    button = new JButton("Value Bet");
    c.fill = GridBagConstraints.HORIZONTAL;
    c.ipady = 0;
    c.gridx = 0;
    c.gridy = 1;
    pane.add(button, c);
    button.addActionListener(new ActionListener() {

        public void actionPerformed(ActionEvent e)
        {
            //Execute when button is pressed
            JFrame frame = new JFrame("Value Bet");
            frame.setVisible(true);
            frame.setSize(500,300);
            GridBagLayout layout = new GridBagLayout();
            frame.setLayout(layout);
            GridBagConstraints c = new GridBagConstraints();

            JLabel label;
            JTextField tf;

            if (shouldFill) {
            //natural height, maximum width
            c.fill = GridBagConstraints.HORIZONTAL;
            }
            if (shouldWeightX) {
            c.weightx = 0.5;
            }

            ...

            final JTextField tf1 = new JTextField();
            c.fill = GridBagConstraints.HORIZONTAL;
            c.gridx = 1;
            c.gridy = 2;
            frame.add(tf1, c);

            tf1.getDocument().addDocumentListener(new DocHandler(){
                public class DocHandler implements DocumentListener{

                    @Override
                    public void changedUpdate(DocumentEvent arg0) {
                        tfHasChanged();

                    }

                    @Override
                    public void insertUpdate(DocumentEvent arg0) {
                        tfHasChanged();

                    }

                    @Override
                    public void removeUpdate(DocumentEvent arg0) {
                        tfHasChanged();

                    }

                }

                public void tfHasChanged(){
                    double chance1 = Double.parseDouble(tf1.getText());
                }
            });      

            ... div components


}

 private static void createAndShowGUI() {
        //Create and set up the window.
        JFrame frame = new JFrame("Betting Application");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //Set up the content pane.
        addComponentsToPane(frame.getContentPane());

        //Display the window.
        frame.pack();
        frame.setVisible(true);
    }

 public static void main(String[] args) {
        //Schedule a job for the event-dispatching thread:
        //creating and showing this application's GUI.
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage