父类窗体有3个按钮,但个个子类继承过来后每个button的相应不同,请问如何做? 是在父类建立3个button的actionperformed函数,然后再在不同的子类中重载吗?父类函数该是protected or public的吧? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 子类有很多 ,但窗体的形式一样,只是响应不一样!所以3个button在父类! 你可以去google一下模板方法模式。 我想了一个变通的方式,把所有的添加事件处理的代码封装到一个方法里,子类覆盖这个方法,写了个例子。我是新手,可能有些乱,仅供参考。import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;public class Main { public static void main(String[] args) { new Sub("SubFrame"); }}class Super extends JFrame { private JButton button1; private JButton button2; private JButton button3; public Super(String title){ super(title); button1=new JButton("button1"); button2=new JButton("button2"); button3=new JButton("button3"); getContentPane().setLayout(new BorderLayout()); getContentPane().add(button1,BorderLayout.NORTH); getContentPane().add(button2,BorderLayout.CENTER); getContentPane().add(button3,BorderLayout.SOUTH); addActionProcessing(); setSize(400,400); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public JButton getButton1(){ return button1; } public JButton getButton2(){ return button2; } public JButton getButton3(){ return button3; } public void addActionProcessing(){ button1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("I'm button1 "); } }); button2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("I'm button2 "); } }); button3.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) { System.out.println("I'm button3 "); } }); }}class Sub extends Super{ public Sub(String title){ super(title); } @Override public void addActionProcessing() { getButton1().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Sub Frame Processing Button1"); } }); getButton2().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Sub Frame Processing Button2"); } }); getButton3().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { System.out.println("Sub Frame Processing Button3"); } }); } }你只要在子类中自己重写public void addActionProcessing()这个方法就可以了。 初学Oracle用哪本书比较好? 真诚请教(关于java数据) 如何自动获取JCombobox的值 请高手解释下 为什么 我 java线程统计问题烦劳各位高手了? 极其菜鸟的问题 jtds为何不能用? 求助:右键item中的打印 关于package打包问题 一个大问题。 给你 几个 字母 求它的全排列 ~~! 字符串匹配问题
我是新手,可能有些乱,仅供参考。
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Main {
public static void main(String[] args) {
new Sub("SubFrame");
}
}class Super extends JFrame {
private JButton button1;
private JButton button2;
private JButton button3;
public Super(String title){
super(title);
button1=new JButton("button1");
button2=new JButton("button2");
button3=new JButton("button3");
getContentPane().setLayout(new BorderLayout());
getContentPane().add(button1,BorderLayout.NORTH);
getContentPane().add(button2,BorderLayout.CENTER);
getContentPane().add(button3,BorderLayout.SOUTH);
addActionProcessing();
setSize(400,400);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public JButton getButton1(){
return button1;
}
public JButton getButton2(){
return button2;
}
public JButton getButton3(){
return button3;
}
public void addActionProcessing(){
button1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {
System.out.println("I'm button1 ");
}
});
button2.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {
System.out.println("I'm button2 ");
}
});
button3.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {
System.out.println("I'm button3 ");
}
});
}
}class Sub extends Super{ public Sub(String title){
super(title);
}
@Override
public void addActionProcessing() {
getButton1().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
System.out.println("Sub Frame Processing Button1");
}
});
getButton2().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
System.out.println("Sub Frame Processing Button2");
}
});
getButton3().addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) {
System.out.println("Sub Frame Processing Button3");
}
});
}
}你只要在子类中自己重写public void addActionProcessing()这个方法就可以了。