jbutton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jbutton_actionPerformed(e);//具体的处理
}
});
public void actionPerformed(ActionEvent e) {
jbutton_actionPerformed(e);//具体的处理
}
});
解决方案 »
- File类的给文件重命名(renameTo)方法引出的问题
- 问个比较基础的问题
- !!!!!!!!小弟初学JAVA 有一些小小问题,请高手用通俗语言能给我讲解一下吗????????????
- 如何用java实现进程的同步与等待?
- 怎么样运行以下程序 ,我在eclipse直接运行是可以的。怎么在dos下运行
- JS正则学习工具
- 有谁知道吗?
- java读取dbf文件,dbf文件如何处理空的列
- 如何用JB5生成可执行文件
- java将一个文件夹下所有文件(递归)的后缀名写入到一个txt中,怎么就是去不了重,还请大神给看看
- 用sun.net.ftp包进行FTP上传时,如何在FTP服务器上创建新的目录?
- 寻合租的室友!!
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;class ColorAction extends AbstractAction
{ public ColorAction(String name, Icon icon,
Color c, Component comp)
{ putValue(Action.NAME, name);
putValue(Action.SMALL_ICON, icon);
putValue("Color", c);
target = comp;
}
public void actionPerformed(ActionEvent evt)
{ Color c = (Color)getValue("Color");
target.setBackground(c);
target.repaint();
}
private Component target;
}class ActionButton extends JButton
{ public ActionButton(Action a)
{ setText((String)a.getValue(Action.NAME));
Icon icon = (Icon)a.getValue(Action.SMALL_ICON);
if (icon != null)
setIcon(icon);
addActionListener(a);
}
}class SeparateGUIFrame extends JFrame
{ public SeparateGUIFrame()
{ setTitle("SeparateGUITest");
setSize(300, 200);
addWindowListener(new WindowAdapter()
{ public void windowClosing(WindowEvent e)
{ System.exit(0);
}
} );
JPanel panel = new JPanel(); Action blueAction = new ColorAction("Blue",
new ImageIcon("blue-ball.gif"),
Color.blue, panel);
Action yellowAction = new ColorAction("Yellow",
new ImageIcon("yellow-ball.gif"),
Color.yellow, panel);
Action redAction = new ColorAction("Red",
new ImageIcon("red-ball.gif"),
Color.red, panel);
panel.add(new ActionButton(yellowAction));
panel.add(new ActionButton(blueAction));
panel.add(new ActionButton(redAction));
panel.registerKeyboardAction(yellowAction,
KeyStroke.getKeyStroke(KeyEvent.VK_Y, 0),
JComponent.WHEN_IN_FOCUSED_WINDOW);
panel.registerKeyboardAction(blueAction,
KeyStroke.getKeyStroke(KeyEvent.VK_B, 0),
JComponent.WHEN_IN_FOCUSED_WINDOW);
panel.registerKeyboardAction(redAction,
KeyStroke.getKeyStroke(KeyEvent.VK_R, 0),
JComponent.WHEN_IN_FOCUSED_WINDOW);
Container contentPane = getContentPane();
contentPane.add(panel); JMenu m = new JMenu("Color");
m.add(yellowAction);
m.add(blueAction);
m.add(redAction);
JMenuBar mbar = new JMenuBar();
mbar.add(m);
setJMenuBar(mbar);
}
}public class SeparateGUITest
{ public static void main(String[] args)
{ JFrame frame = new SeparateGUIFrame();
frame.show();
}
}
jbutton.addMouseListener(new myMouseListener );
class myMouseListener implements MouseListener
{//加入mouselistener类的所有接口函数}在jb中将更加简单
对于按钮要addActionListener
对于panel要registerKeyboardAction
对于窗体要addWindowListener那么,为什么有的是要添加激活监听,有的却又要注册键盘触发?代码可能是最有说服力的。可我不懂为什么要这么写呀。请说说思路好吗?
其实注册监听的时候大体都是这样的
jbutton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
jbutton_actionPerformed(e);//具体的处理
}
});
只是不同的监听用到的事件类和监听接口不同
点击一个按钮,就产生一个事件,事件的类型是Action事件。
按钮就是事件源,它把这个事件被一个或多个对这个事件感兴趣的
监听器得到。事件源怎么知道谁对这个事件感兴趣呢?
这就需要向事件源注册监听器。而事件是在监听器里被处理的。
而一个事件源可能会发生多种事件(例如按钮),对于不同的
事件就要注册不同类型的监听器来处理。
控键.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent e) {}
....//好多其他事件什么void mouseClicked(MouseEvent e)
Invoked when the mouse button has been clicked (pressed and released) on a component.
void mouseEntered(MouseEvent e)
Invoked when the mouse enters a component.
void mouseExited(MouseEvent e)
Invoked when the mouse exits a component.
void mousePressed(MouseEvent e)
Invoked when a mouse button has been pressed on a component.
void mouseReleased(MouseEvent e) }键盘事件就是addKeyListener了,里面监听的事件查查JDK API就知道了
事件的类型是Action事件?这句什么意思呀?
是否可以这么理解: 每一种事件监听器(一种接口)抽象了对某一种事件的处理方法。具体如何处理需要自己写。当想要处理控件的一个事件时,就添加能处理该事件的事件监听器(即连接并实现该接口。)
public void keyTyped(KeyEvent e){}
public void keyPressed(KeyEvent e){}
public void keyReleased(KeyEvent e){}
});//这是键盘事件
public void mouseClicked(MouseEvent e){}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
});