您的位置:首页 > 产品设计 > UI/UE

图形用户界面(一)GUI元素之判定事件源

2009-11-14 22:42 211 查看
一个监听器对象用来监听两个对象,如何判定事件源?
LeftRight .java(驱动程序)
LeftRightPanel .java

效果如图:





源程序如下:

import javax.swing.JFrame;
public class LeftRight {

public static void main(String[] args) {
JFrame frame = new JFrame("Right or Left");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add(new LeftRightPanel());

frame.pack();
frame.setVisible(true);

}
}

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Label;
import java.awt.Panel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JPanel;

public class LeftRightPanel extends Panel {
private JButton left,right;
private Label label;

//另外定义盛放按钮的Panel
private JPanel buttonPanel;

public LeftRightPanel(){
left = new JButton("Left");
right = new JButton("Right");

ButtonListener listener = new ButtonListener();
left.addActionListener(listener);
right.addActionListener(listener);

label = new Label("Push a button");

buttonPanel = new JPanel();
buttonPanel.setPreferredSize(new Dimension(200,40));
buttonPanel.setBackground(Color.cyan);
buttonPanel.add(left);
buttonPanel.add(right);

setPreferredSize(new Dimension(200,80));
setBackground(Color.cyan);
add(label);
add(buttonPanel);
}

//判定事件源
public class ButtonListener implements ActionListener{
public void actionPerformed(ActionEvent e) {
if(e.getSource() == left)
label.setText("Left");
else
label.setText("Right");
}
}
}

两个按钮被放到同一个buttonPanel面板中,这本面板不是由LeftRightPanel类表示的面板。将两个按钮放到同一个面板中,可以保证它们显示时的相对位置关系,即使用各种方法重置框架也不受影响。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: