import java.awt.Dimension;
import java.awt.FlowLayout;
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.SwingUtilities;
import javax.swing.WindowConstants;
/**
* Constraints:
*
* - Event 2 should be performed before Event 3, otherwise, Event 3 cannot be
* performed.
* - Any other combinations are all allowed.
*
*
* Implementation for the constraints:
*
* - Button "Event 3" is disabled at startup, and a click on button "Event 2"
* enables button "Event 3". After that, button "Event 3" is enabled all the time.
*
*
*
* @author Si Huang
*/
public class SimpleFrameRequires extends JFrame {
private static final long serialVersionUID = 1L;
private JButton event1;
private JButton event2;
private JButton event3;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
SimpleFrameRequires frame = new SimpleFrameRequires();
frame.setVisible(true);
}
});
}
public SimpleFrameRequires() {
event1 = new JButton("Event 1");
event2 = new JButton("Event 2");
event2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
event3.setEnabled(true);
}
});
event3 = new JButton("Event 3");
event3.setEnabled(false);
setLayout(new FlowLayout());
add(event1);
add(event2);
add(event3);
setTitle("SimpleFrame");
setResizable(false);
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
pack();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setLocation((screenSize.width - getWidth()) / 2, (screenSize.height - getHeight()) / 2);
}
}