//这是我的代码import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import static FrameworkDisplay.SwingConsole.*;public class TrackEvent2a extends JFrame{
private JButton jb = new JButton("JButton");
private JTextField jt = new JTextField(10);
public TrackEvent2a(){
setLayout(new FlowLayout());
FocusAdapter fa = new FocusAdapter(){
public void focusGained(FocusEvent e){
jt.setText(e.toString());
}
};
jb.addFocusListener(fa);
jt.setEditable(false);
add(jb);
add(jt);
}
public static void main(String[] args){
// 之前写好的方法,放在了包里,前面已经import了
run(new TrackEvent2a(),300,200);
}
}刚开始运行,我还没有点击按钮,jt就已经显示事件了,我想做到当我点击jb,jt才显示事件,请问该怎么修改代码?
import java.awt.*;
import java.awt.event.*;
import static FrameworkDisplay.SwingConsole.*;public class TrackEvent2a extends JFrame{
private JButton jb = new JButton("JButton");
private JTextField jt = new JTextField(10);
public TrackEvent2a(){
setLayout(new FlowLayout());
FocusAdapter fa = new FocusAdapter(){
public void focusGained(FocusEvent e){
jt.setText(e.toString());
}
};
jb.addFocusListener(fa);
jt.setEditable(false);
add(jb);
add(jt);
}
public static void main(String[] args){
// 之前写好的方法,放在了包里,前面已经import了
run(new TrackEvent2a(),300,200);
}
}刚开始运行,我还没有点击按钮,jt就已经显示事件了,我想做到当我点击jb,jt才显示事件,请问该怎么修改代码?
解决方案 »
- 刚才去thoughtworks面试,被结结实实的鄙视了一把,不过输的心服口服!
- 为什么我写的JFrame只能在main方法里new,不能在按钮事件里new
- 父类域(field)的访问修饰【private或protected】用哪个更好?
- 请教如何对二叉数进行遍历--不用递归
- tomcat 怎么禁止查看目录,jb6怎么打包war?(在线等待)
- 将java数组中的数据绘制成曲线,应该用怎样的算法?请求帮助.
- 高分求助:Jbuilder6与Weblogic6.1的整合
- 为什么没有显示?
- 求助,applet在浏览器里面的显示问题
- 大家来讨论下java中的值传递和引用传递~
- 为什么创建不了数据源呢?(要用在连接sql server数据时),在线急盼!
- 用HashSet时的一些问题?
问题出在这 程序从main开始 而你首先执行事件 当然不行了
FocusAdapter fa = new FocusAdapter(){
public void focusGained(FocusEvent e){
jt.setText(e.toString());
}
};
//***************************************
可以不用这个事件监听的,直接用Actionperformed事件,一样的效果,
jb.addActionListener(new jb_actionAdapter(this));
//.......
//.......
public void jb_actionPerformed(ActionEvent e) {
jt.setText(e.toString());
}//以下是jbuilder自动生成,只供参考
class jb_actionAdapter implements ActionListener {
private ddddddd adaptee;
jb_actionAdapter(jb adaptee) {
this.adaptee = adaptee;
} public void actionPerformed(ActionEvent e) {
adaptee.jb_actionPerformed(e);
}
}
-------------------------------------------------------------------------
//usiboy 编写
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import static FrameworkDisplay.SwingConsole.*;public class TrackEvent2a extends JFrame{
private JButton jb;
private JTextField jt;public TrackEvent2a(){
jb = new JButton("JButton");
jt = new JTextField(10);}public void launch(){
setLayout(new FlowLayout());
setVisible(true);
FocusAdapter fa = new FocusAdapter(){
public void focusGained(FocusEvent e){
jt.setText(e.toString());
}
};
jb.addFocusListener(fa);
jt.setEditable(false);
add(jb);
add(jt);
}public static void main(String[] args){
// 之前写好的方法,放在了包里,前面已经import了
TrackEvent2a trackEvent2a = new TrackEvent2a();
run(trackEvent2a,300,200);
trackEvent2a.launch();
}
}//你试试看
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;public class TrackEvent2a extends JFrame
{
private JButton jb;
private JTextField jt;
public TrackEvent2a()
{
jb=new JButton("JButton");
jt=new JTextField(10);
setLayout(new FlowLayout());
jb.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
jt.setText(e.toString());
}
});
jt.setEditable(false);
add(jb);
add(jt);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300,200);
setVisible(true);
} public static void main(String[] args)
{
new TrackEvent2a();
}
}编译,运行。全没问题,点击才出现事件。