按下时,框架中声明的按钮无法正常工作

时间:2015-10-24 14:41:21

标签: java swing

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
        }
    }      

1 个答案:

答案 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("")