gpt4 book ai didi

java - 嵌套类与实现 ActionListener

转载 作者:搜寻专家 更新时间:2023-10-30 21:20:11 25 4
gpt4 key购买 nike

创建实现 ActionListener 的嵌套类有什么好处或坏处:

public class Foo{
Foo(){
something.addActionListener(new ButtonListener());
}
//...
private class ButtonListener implements ActionListener{
public void actionPerformed(ActionEvent e){
//...
}
}
}

与在主类本身中实现 ​​ActionListener 相比:

public class Foo implements ActionListener{
Foo(){
something.addActionListener(this);
}
//...
public void actionPerformed(ActionEvent e){
//...
}
}

我经常看到这两个例子,只是想知道是否有“最佳实践”。

最佳答案

@Ankur,您仍然可以使用匿名内部类作为您的监听器,并拥有一个独立的独立控制类,因此代码非常易于维护,这是我有点喜欢使用的技术。例如:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class AnonymousInnerEg {
private static void createAndShowUI() {
GuiPanel guiPanel = new GuiPanel();
GuiControl guiControl = new GuiControl();
guiPanel.setGuiControl(guiControl);

JFrame frame = new JFrame("AnonymousInnerEg");
frame.getContentPane().add(guiPanel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
createAndShowUI();
}
});
}
}

class GuiPanel extends JPanel {
private GuiControl control;

public GuiPanel() {
JButton startButton = new JButton("Start");
startButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (control != null) {
control.startButtonActionPerformed(e);
}
}
});
JButton endButton = new JButton("End");
endButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (control != null) {
control.endButtonActionPerformed(e);
}
}
});

add(startButton);
add(endButton);
}

public void setGuiControl(GuiControl control) {
this.control = control;
}


}

class GuiControl {
public void startButtonActionPerformed(ActionEvent ae) {
System.out.println("start button pushed");
}

public void endButtonActionPerformed(ActionEvent ae) {
System.out.println("end button pushed");
}
}

关于java - 嵌套类与实现 ActionListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5451010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com