展开全部
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.concurrent.*;
/**
* @32313133353236313431303231363533e78988e69d8331333332623331author Hardneedl
*/
final class JPanelDemo extends JFrame {
public String getTitle() {return "JPanelDemo";}
static private final Dimension size = new Dimension(600,400);
public Dimension getPreferredSize() {return size;}
public Dimension getMaximumSize() {return size;}
public Dimension getMinimumSize() {return size;}
public Dimension getSize(){return size;}
private class ChangeVisibilityAction implements ActionListener{
private JComponent cmp;
private ChangeVisibilityAction(JComponent cmp) {this.cmp=cmp;}
public void actionPerformed(ActionEvent e) {
cmp.setVisible(false);
System.out.println("action performed");
}
}
private class StartAction extends AbstractAction{
private JComponent cmp;
private Timer timer;
public StartAction(JComponent cmp) {super("start");this.cmp=cmp;}
public void actionPerformed(ActionEvent e) {
if(timer==null){
timer=new Timer(5000,new ChangeVisibilityAction(cmp)){
public boolean isRepeats() {
return false;
}
};
timer.start();
}
}
}
private JPanel panel;
JPanelDemo() throws HeadlessException {
init();
attachListeners();
doLay();
}
private void init(){
panel=new JPanel(){
public boolean isOpaque() {return true;}
public Color getBackground() {return Color.MAGENTA;}
};
}
private void attachListeners(){
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void doLay(){
Container container = getContentPane();
container.add(new JButton(new StartAction(panel)),BorderLayout.NORTH);
container.add(panel,BorderLayout.CENTER);
pack();
setVisible(true);
}
public static void main(String[] args) {
System.setProperty("swing.defaultlaf","com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
SwingUtilities.invokeLater(
new Runnable(){
public void run() {
new JPanelDemo();
}
}
);
}
}