public class myWindow extends JFrame implements ActionListener{
如果我有这段代码,我的类将是一个JFrame,在这里我可以在构造函数中添加组件和actionlistener,如下所示
public MyWindow()
{
JButton b = new Jbutton("button");
b.addActionListener(this);
}
这个关键字将用作匿名actionlistener对象(这是我的类),对吗?
稍后,我将用标题覆盖actionPerformed方法:-
public void ActionPerformed(ActionEvent ae)
{ :
:
}
我真的很困惑。。我的书中说“侦听器对象调用事件处理程序方法,并将事件作为参数”
侦听器对象:这个
事件处理程序方法: ActionPer0005(ActionEvents ae)
辩君:我的活动是JButton b。。为什么它不是EventAction类型?如果是这样,我们为什么使用:
ae.getActionCommand();
我认为这是一种判断哪个组件触发了事件的方法,当组件作为参数传递时,我们为什么需要它?
您的JButton是一个组件,而不是一个事件。事件由组件上的某些操作生成。在本例中,当您单击按钮时,将触发一个ActionEvent,并将其传递给订阅该事件的所有侦听器。在本例中,作为ActionListener的是您的MyWindow对象
这个关键字将用作匿名actionlistener对象(这是我的类),对吗?
不,这将是实现actionsListener的类的对象。在你的情况下,它是“我的窗口”。
我的活动是JButton b。。为什么它不是EventAction类型?如果是这样,我们为什么使用:
JButton b是一个组件,而不是事件。事件描述了源状态的变化。当用户与图形用户界面交互时,事件就会生成,比如点击按钮、移动鼠标。
参考点击这里
事件处理是一种控制事件并决定事件发生时应该发生什么的机制。
事件处理涉及的步骤:-
>
现在,将自动创建相关事件类的对象,并在同一对象中填充有关源和事件的信息。
事件对象被转发到已注册侦听器类的方法。
该方法现在被执行并返回。
我认为这是一种判断哪个组件触发了事件的方法,当组件作为参数传递时,我们为什么需要它?
现在你应该明白了,同一个ActionsListerner可能注册了许多按钮。现在,为了对不同的事件执行不同的操作,例如getActionCommand()很方便,它将告诉您哪个按钮是触发事件的源。希望这有帮助。
我试图给你一个简单的JButton程序的例子。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class ButtonSwing {
private int numClicks = 0;
public Component createComponents() {
//Method for creating the GUI componenets
final JLabel label = new JLabel("Clicks: " + "0"); //final so that i can access inside inner class
JButton button = new JButton("Simple Button");
button.addActionListener(
//inner class for ActionListener. This is how generally it is done.
new ActionListener() {
public void actionPerformed(ActionEvent e) {
numClicks++;
label.setText("Clicks: " + numClicks);
System.out.println(e.getActionCommand());
System.out.println(e.getModifiers());
System.out.println(e.paramString());
}
}
);
JPanel pane = new JPanel(); //using JPanel as conatiner first.
pane.setLayout(new FlowLayout());
pane.add(button); // adding button to the JPanel.
pane.add(label); // adding label to the JPanel.
return pane;
}
public static void main(String[] args) {
JFrame frame = new JFrame("SwingApplication");
ButtonSwing obj = new ButtonSwing();
Component contents = obj.createComponents();
frame.getContentPane().add(contents);
frame.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
frame.pack(); //It will cause the window to be sized to fit the preferred size
//and layouts of its subcomponents.
frame.setVisible(true);
}
}
当用户与组件交互时,例如h:commandButton或h:link,JSF会触发可以通过两种方式处理的动作事件。 S.No 技术与描述 1 Method Binding 在UI Component的actionListener属性中传递托管bean方法的名称。 2 ActionListener 实现ActionListener接口并将实现类名称传递给UI Component的actionList
处理ActionEvent的类应该实现此接口。该类的对象必须在组件中注册。 可以使用addActionListener()方法注册该对象。 当动作事件发生时,将调用该对象的actionPerformed方法。 接口声明 以下是java.awt.event.ActionListener接口的声明: public interface ActionListener extends EventLis
处理ActionEvent的类应该实现此接口。 该类的对象必须在组件中注册。 可以使用addActionListener()方法注册该对象。 当动作事件发生时,将调用该对象的actionPerformed方法。 接口声明 (Interface Declaration) 以下是java.awt.event.ActionListener接口的声明 - public interface ActionLi
问题内容: 我想知道是否可以测试是否单击了JMenu(而不是JMenuItem)。我尝试向其中添加一个ActionListener,但似乎无法识别它。我只需要它在按下JMenu按钮时执行一个操作,以便可以在打开菜单之前更改该菜单的JMenuItems。也欢迎所有取得这一结果的工作! 谢谢 问题答案: 对于使用 码 仅用于ButtonModel
问题内容: 嘿,大家晚上好,我对名为“提交”的第二个按钮有问题,因为我无法将我输入的所有信息都转移到框架中的空JList中,这是我的代码,到目前为止,我的问题是如果我单击“提交”,我的所有信息都将出现在我的代码中框架中的消息区域需要列出。谢谢 问题答案: 好吧,据我所知,这将从Fields中获取信息,并将其放入您在那里的列表中 b2.addActionListener(new ActionList
问题内容: JFrameWithPanel不是抽象的,并且不会重写java.awt.event.ActionListener公共类中的抽象方法actionPerformed(java.awt.event.ActionEvent)JFrameWithPanel扩展了JFrame实现ActionListener 我没有得到这个代码。Book and Java网站告诉我这是该方法的语法,但是此错误再次不