我尝试使用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
中输入值。任何帮助表示赞赏。
答案 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();
}
});
您可以在此处详细了解
答案 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。