多点传送

来源:互联网 发布:数据保护线缠绕解 编辑:程序博客网 时间:2024/05/16 00:30
package demo.event.swing;


import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;


import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;


public class MulticastTest {
public static void main(String[] args) {
new MulticastFrame();
}
}


class MulticastFrame extends JFrame{
public MulticastFrame() {

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
Dimension dim=Toolkit.getDefaultToolkit().getScreenSize();
this.setBounds((dim.width-500)/2, (dim.height-500)/2, 500, 500);
this.setTitle("MulticastTest");
this.add(new MulticastPanel());
}

//使用内部类
class MulticastPanel extends JPanel{
public MulticastPanel() {
JButton newButton =new JButton("New ...");
final JButton closeAllButton=new JButton("Close  All");
this.add(newButton);
this.add(closeAllButton);

ActionListener actionListener=new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {


BlankFrame b=new BlankFrame(closeAllButton);
b.setVisible(true);
}
};


newButton.addActionListener(actionListener);

}
}

}


class BlankFrame extends JFrame{
private ActionListener closeListener;
private static final int DEFAULT_WIDTH=150;
private static final int DEFAULT_HEIGHT=200;
private static final int SPACING=40;
private static   int counter=0;

public BlankFrame(final JButton closeButton) {

counter++;
this.setTitle("Frame "+counter);
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT);
setLocation(SPACING*counter,SPACING*counter);
closeListener=new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
closeButton.removeActionListener(closeListener);
dispose();

}
};
closeButton.addActionListener(closeListener);
}
}
原创粉丝点击