我试图创建一个按钮来计算文本字段中的字符数

时间:2015-11-25 14:37:34

标签: java user-interface

我尝试使用JButton count来计算输入JTextField t的字符数。我是Java和GUI的新手,但这是我的代码:

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

public class GUI1 extends Frame implements ActionListener{

    TextField t; 
    Button count;
    int a;
    Choice choice;

    public GUI1(){

        this.t = new TextField("", 30);

        this.count = new Button("count");
        this.count.addActionListener(this);

        JTextField x = new JTextField();
        x.setEditable(false);

        this.setTitle("Character count");
        this.setLayout(new FlowLayout());

        this.add(x);
        this.add(t);
        this.add(count);

        this.pack();
        this.setVisible(true);

    }

    public void actionPerformed(ActionEvent e) {
        if(e.getSource()== this.count) 


       t.setText(choice.getSelectedItem()+ " " +a);
    }

我也尝试在另一个不可编辑的JTextField x中输入值。任何帮助表示赞赏。

4 个答案:

答案 0 :(得分:3)

将此添加到您的代码中

count.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
    a = t.getText().length();
 }
});

OR

您可以像这样使用lambda表达式

count.addActionListener(e -> a = t.getText().length());

更多 http://docs.oracle.com/javase/7/docs/api/java/awt/event/ActionListener.html

答案 1 :(得分:2)

您需要添加一个监听器

TextField t = new TextField();

Button b = new Button("Count");
b.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        int count = t.getText().length();
     }
});

您可以在此处详细了解

http://www.tutorialspoint.com/awt/awt_button.htm

答案 2 :(得分:1)

首先,我建议您不要使用AWT元素,因为它会带来大量问题并且几乎没有支持,相反,您可以尝试使用Swing组件替换/修复AWT。您可以阅读有关here的更多信息。您可能还想阅读AWT vs Swing (Pros and Cons)

现在进入你的问题:

您应该避免从JFrame延伸,我建议您改为创建一个新的JFrame对象。 Here's the reason to why。话虽如此,您还可以使用this.t删除所有this和其他来电。

我很高兴您使用布局管理器!

现在要计算JTextField上的字符数并将文字设置为其他JTextField,您应该使用以下代码:

count.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        int count = t.getText().length();
        System.out.println(count);
        x.setText(t.getText());
    }
});

此外,我修复了您的代码,我将AWT元素更改为Swing元素,并将cols数量添加到第二个JTextField,以便显示。

所以,这是我从你的代码中创建的一个运行示例(并删除了Choice choice行,因为你没有发布该代码):

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

public class GUI1 {

    JTextField t; 
    JButton count;
    int a;
    JFrame frame;

    public GUI1(){
        frame = new JFrame();
        t = new JTextField("", 15);
        count = new JButton("count");
        JTextField x = new JTextField("", 15);
        x.setEditable(false);

        count.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                int count = t.getText().length();
                System.out.println(count);
                x.setText(t.getText());
            }
        });

        frame.setTitle("Character count");
        frame.setLayout(new FlowLayout());

        frame.add(x);
        frame.add(t);
        frame.add(count);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.pack();
        frame.setVisible(true);

    }

    public static void main (String args[]) {
        new GUI1();
    }
}

答案 3 :(得分:0)

点击按钮时应该

String str = t.getText(); // get string from jtextfield

从texfield保存文本。然后你可以使用类似的东西:

a = str..length(); // get length of string
x.setText(str + " " + a); //set it to the field

将其设置为JTextField。