java怎么实现在一个类中放置监听器,而在另一个类中事件呢?
比如说我定义了两个类,a和b类,我在a类当中写窗体、组件、监听器等,在b类当中写a类中要用到的事件,比如当a类中的按钮点击时,就调用b类中相应的事件,该怎么写?本人新手,...
比如说我定义了两个类,a和b类,我在a类当中写窗体、组件、监听器等,在b类当中写a类中要用到的事件,比如当a类中的按钮点击时,就调用b类中相应的事件,该怎么写?本人新手,希望说的通俗易懂一些,最好有代码示范,谢谢各位了
展开
2个回答
展开全部
在A类中new一个B类...在给A类的按钮添加监听时...添加的是B类的监听...
例如:(简写,希望看得懂)
class A extends JFrame
{
public A()
{
X = new B();
…… //省略,假设这里new了各种组件
A的某个组件.addActionListener(X); //给组件添加B的监听,这样这个组件在触发某个事件时,就可以调用B类中的事件了
}
}
class B implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
…… //这是写触发时说要做的事...当A中添加了B类监听的组件相应触发事件时,就会自动调用这里了
}
}
总而言之,就是当你想使用某个类(B)作为对于触发事件的处理时,就让这个类(B)去implements监听,然后在你需要的组件上添加对B的监听(组件.addXXXListener(X))就可以了...
addXXXListener(?),这个函数在触发了事件时,会自动去找?类中相应的方法去处理事件...
例如:(简写,希望看得懂)
class A extends JFrame
{
public A()
{
X = new B();
…… //省略,假设这里new了各种组件
A的某个组件.addActionListener(X); //给组件添加B的监听,这样这个组件在触发某个事件时,就可以调用B类中的事件了
}
}
class B implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
…… //这是写触发时说要做的事...当A中添加了B类监听的组件相应触发事件时,就会自动调用这里了
}
}
总而言之,就是当你想使用某个类(B)作为对于触发事件的处理时,就让这个类(B)去implements监听,然后在你需要的组件上添加对B的监听(组件.addXXXListener(X))就可以了...
addXXXListener(?),这个函数在触发了事件时,会自动去找?类中相应的方法去处理事件...
来自:求助得到的回答
展开全部
//这是A类
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class MyFrame extends JFrame {
private JButton addButton;
private JTextField resultText;
public static void main(String[] args) {
new MyFrame();
}
public MyFrame() {
setSize(400, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
resultText = new JTextField(20);
addButton = new JButton("+1");
addButton.addActionListener(new AddButtonAction(resultText));
add(resultText);
add(addButton);
setVisible(true);
}
}
//这是B类
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JTextField;
public class AddButtonAction implements ActionListener {
private JTextField resultText;
public AddButtonAction(JTextField resultText) {
this.resultText = resultText;
}
public void actionPerformed(ActionEvent e) {
try {
int value = Integer.parseInt(resultText.getText());
resultText.setText(String.valueOf(value + 1));
} catch (NumberFormatException ne) {
resultText.setText("your input string is not a number!");
}
}
}
import java.awt.FlowLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;
public class MyFrame extends JFrame {
private JButton addButton;
private JTextField resultText;
public static void main(String[] args) {
new MyFrame();
}
public MyFrame() {
setSize(400, 300);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setLayout(new FlowLayout());
resultText = new JTextField(20);
addButton = new JButton("+1");
addButton.addActionListener(new AddButtonAction(resultText));
add(resultText);
add(addButton);
setVisible(true);
}
}
//这是B类
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JTextField;
public class AddButtonAction implements ActionListener {
private JTextField resultText;
public AddButtonAction(JTextField resultText) {
this.resultText = resultText;
}
public void actionPerformed(ActionEvent e) {
try {
int value = Integer.parseInt(resultText.getText());
resultText.setText(String.valueOf(value + 1));
} catch (NumberFormatException ne) {
resultText.setText("your input string is not a number!");
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询