小弟是一初学者,现在还在琢磨GUI ,我想请问一个神vLinux飘飘斑竹很久以前问过的问题,有什么方法可以用panel1来监听panel2上的组件的事件作出反应? 是不是用Action接口??还有其他的办法吗?给我个例子好吗?
例如,在帧上加panel1 ,panel2两个容器,panel1上加label1标签,panel2上加button1一个按钮,通过按下这个按钮在label1上显示一行字(内容就随便拉)。
[此贴子已经被作者于2005-12-6 16:41:19编辑过]
我不是很明白您的意思,我最近都在看JSP/SERVLET,太久没看SWING了
如果仅仅是实现你的例子,我会这样做
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Test implements ActionListener{
private JFrame frame = null;
private JButton button = null;
private JLabel label = null;
/** Creates a new instance of Test */
public Test() {
frame = new JFrame("一个测试");
button = new JButton("点我看看?");
label = new JLabel("我是小猫");
JPanel panelA = new JPanel();
JPanel panelB = new JPanel();
JPanel panel = new JPanel();
button.addActionListener(this);
panelA.add(label);
panelB.add(button);
panel.add(panelA);
panel.add(panelB);
frame.setContentPane(panel);
frame.setVisible(true);
frame.pack();
}
public void actionPerformed(ActionEvent e){
label.setText("我是小狗");
}
public static void main(String args[]){
new Test();
}
}
如果遇到大的工程,也就是说actionPerformed()方法非常庞大,我将会用一个类去继承这个Test类,然后再在那个类中是完成actionPerformed()方法的实现
自己做了一个试了一下,可以运行,但是总觉得哪里不太对??哪位老大有Action接口的的例题吗?可以发上来看看不??
/** 这个程序是用来计算球员满时间48分钟绩效的*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.DecimalFormat;
public class NBATest
{ public static void main(String[] args)
{ JFrame f = new NTFrame();
f.show();
}
}
class NTFrame extends JFrame
implements ActionListener
{ public NTFrame()
{ setTitle("NBATest");
setSize(500, 350);
showPanel = new JPanel();
buttonPanel = new JPanel();
Container contentPane = getContentPane();
contentPane.add(showPanel, "Center");
contentPane.add(buttonPanel, "South");
button = new JButton("sums");
buttonPanel.add(button);
button.addActionListener(this);
ppg = new JTextField(3);
rpg = new JTextField(3);
apg = new JTextField(3);
ppgf = new JTextField(3);
rpgf = new JTextField(3);
apgf = new JTextField(3);
min = new JTextField(3);
showPanel.add(ppg); // ppg 平均每场得分数
showPanel.add(rpg); // rpg 平均每场篮板数
showPanel.add(apg); // apg 平均每场助攻数
showPanel.add(min); // min 平均每场上场时间
showPanel.add(ppgf);
showPanel.add(rpgf);
showPanel.add(apgf);
ppgf.setEditable(false);
rpgf.setEditable(false);
apgf.setEditable(false);
}
public void actionPerformed(ActionEvent evt)
{ double pd = Double.parseDouble(ppg.getText());
double rd = Double.parseDouble(rpg.getText());
double ad = Double.parseDouble(apg.getText());
double md = Double.parseDouble(min.getText());
if (md == 0.0) { System.exit(0); }
DecimalFormat df = new DecimalFormat("0.##");
ppgf.setText("" + df.format(pd * 48 / md));
rpgf.setText("" + df.format(rd * 48 / md));
apgf.setText("" + df.format(ad * 48 / md));
}
private JPanel showPanel;
private JPanel buttonPanel;
private JButton button;
private JTextField ppg;
private JTextField rpg;
private JTextField apg;
private JTextField ppgf;
private JTextField rpgf;
private JTextField apgf;
private JTextField min;
}