我想在输出屏幕上的txtf1中添加值并获取它。如何在输出屏幕上的文本字段中输入值?

import java.awt.Color;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

public class demog extends JPanel implements ActionListener{

private TextField textf, txtf1;

public void jhand(){
textf = new TextField();
    textf.setSize(40, 40);
    textf.setText("20");
    textf.setEditable(false);
    textf.setBackground(Color.WHITE);
    textf.setForeground(Color.BLACK);
    //textf.setHorizontalAlignment(SwingConstants.CENTER);
    textf.setLocation(15, 15);
    //textf.addActionListener(this);
    txtf1 = new TextField();
    txtf1.setSize(40, 40);
    txtf1.getText();
    txtf1.setEditable(false);
    txtf1.setBackground(Color.WHITE);
    txtf1.setForeground(Color.BLACK);
    //txtf1.setHorizontalAlignment(SwingConstants.CENTER);
    txtf1.setLocation(50, 50);
    JFrame frame = new JFrame("demo");
    JPanel p = new JPanel();
    p.setOpaque(true);
      p.setBackground(Color.WHITE);
      p.setLayout(null);
      frame.setContentPane(p);
      frame.setSize(500,500);
        frame.setVisible(true);
        p.add(textf);
        p.add(txtf1);
}

public void actionPerformed(ActionEvent evt) {
    String text = textf.getText();
    System.out.println(text);
}

public static void main(String... args){
    demog g = new demog();
    g.jhand();
}
}

最佳答案

您必须更改一些代码才能正常工作。您的代码中有问题,我在以下代码中为您解决了这些问题。查看评论以了解一些技巧;-)

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.WindowConstants;

// Use upper Case in the start of you class names:
public class Demog extends JPanel implements ActionListener {

    private JTextField textf, txtf1;

    public Demog() {
        jhand();
    }

    public void jhand() {
        setLayout(new FlowLayout()); // Always set the layout before you add components

        // you can use null layout, but you have to use setBounds() method
        //      for placing the components. For an advanced layout see the
        //      tutorials for GridBagLayout and mixing layouts with each other.

        textf = new JTextField(); // Do not mix AWT component with
                                  //    Swing (J components. See the packages)
        //textf.setSize(40, 40); // Use setPreferredSize instead
        textf.setPreferredSize(new Dimension(40, 40));
        textf.setText("20");
        textf.setEditable(false); // Text fields are for getting data from user
                                  //    If you need to show something to user
                                  //    use JLabel instead.
        textf.setBackground(Color.WHITE);
        textf.setForeground(Color.BLACK);
        add(textf);

        txtf1 = new JTextField();
        //txtf1.setSize(40, 40); Use setPreferredSize instead
        txtf1.setPreferredSize(new Dimension(40, 40));
        txtf1.getText();
        txtf1.setEditable(false);
        txtf1.setBackground(Color.WHITE);
        txtf1.setForeground(Color.BLACK);
        add(txtf1);

        JButton b = new JButton("Click ME!");
        b.addActionListener(this);
        add(b);
    }

    public void actionPerformed(ActionEvent evt) {
        String text = textf.getText();
        JOptionPane.showMessageDialog(Demog.this, "\"textf\" text is: "+text);
    }

    public static void main(String[] args) {
        JFrame frame = new JFrame("demo");
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        Demog p = new Demog();
        p.setBackground(Color.WHITE);
        frame.setContentPane(p);
        frame.setSize(500, 500);
        frame.setVisible(true);
    }
}


祝好运。

10-04 15:01