import java.awt.*;
import java.sql.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
public class nava extends JFrame implements ActionListener
{
Button b1=new Button("clear");
TextField t1=new TextField();
public nava()
{
this.setLayout(new GridLayout(2,2));
b1.addActionListener(this);
this.setSize(200,200);
add(t1);
add(b1);
}
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b1)
{
t1.setText(""); //without space
}
}
public static void main(String r[])
{
new nava().show();
}
}
单击按钮b1时,TextField应为空,但不是 变空。文本字段保持不变。但是当我在actionPerformed函数中放置空格时,它在textfield中添加了一个空格。请告诉我代码有什么问题。
public void actionPerformed(ActionEvent e)
{
if(e.getSource()==b1)
{
t1.setText(" "); //with space
}
}
答案 0 :(得分:1)
使用Swing组件,而不是AWT组件,代码应该可以使用。例如,使用JButton和JTextField而不是Button和TextField。也不要调用不推荐使用的方法,如show()。请考虑检查Swing教程,因为它们会教你很多,你会觉得有用。例如:
public class OfflineActivity extends ListActivity {
...
@Override
public void onCreate(Bundle savedInstanceState) {
...
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
// TODO implement your logic
}
}
另外,您需要学习并使用Java naming conventions。变量名都应以较低的字母开头,而类名以大写字母开头。了解并遵循这一点将使我们能够更好地理解您的代码,并使您能够更好地理解其他代码。
至于为什么你的代码不起作用 - 老实说我不知道因为我不直接使用AWT库组件;很少有人这样做。修改:注意this similar question。该问题的作者不知道为什么import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
@SuppressWarnings("serial")
public class Nava extends JFrame implements ActionListener {
JButton b1 = new JButton("Clear");
JTextField t1 = new JTextField("Fubar", 10);
public Nava() {
this.setLayout(new GridLayout(2, 2));
b1.addActionListener(this);
// this.setSize(200, 200);
add(t1);
add(b1);
b1.setMnemonic(KeyEvent.VK_C); // alt-c to activate button
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == b1) {
t1.setText("");
}
}
public static void main(String r[]) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
Nava nava = new Nava();
nava.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
nava.pack(); // let components and layout managers size themselves
nava.setLocationByPlatform(true);
nava.setVisible(true);
}
});
}
}
,而是提供解决方法:
setText("")