/*
Java Swing, 2nd Edition
By Marc Loy, Robert Eckstein, Dave Wood, James Elliott, Brian Cole
ISBN: 0-596-00408-7
Publisher: O'Reilly
*/
// DialogDesktop.java
//A frame that can easily support internal frame dialogs.
//
import java.awt.Dimension;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class DialogDesktop extends JFrame {
public DialogDesktop(String title) {
super(title);
setDefaultCloseOperation(EXIT_ON_CLOSE);
final JDesktopPane desk = new JDesktopPane();
setContentPane(desk);
// Create our "real" application container; use any layout manager we
// want.
final JPanel p = new JPanel(new GridBagLayout());
// Listen for desktop resize events so we can resize p. This will ensure
// that
// our container always fills the entire desktop.
desk.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent ev) {
Dimension deskSize = desk.getSize();
p.setBounds(0, 0, deskSize.width, deskSize.height);
p.validate();
}
});
// Add our application panel to the desktop. Any layer below the
// MODAL_LAYER
// (where the dialogs will appear) is fine. We'll just use the default
// in
// this example.
desk.add(p);
// Fill out our app with a few buttons that create dialogs
JButton input = new JButton("Input");
JButton confirm = new JButton("Confirm");
JButton message = new JButton("Message");
p.add(input);
p.add(confirm);
p.add(message);
input.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
JOptionPane.showInternalInputDialog(desk, "Enter Name");
}
});
confirm.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
JOptionPane.showInternalConfirmDialog(desk, "Is this OK?");
}
});
message.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ev) {
JOptionPane.showInternalMessageDialog(desk, "The End");
}
});
}
// A simple test program
public static void main(String[] args) {
DialogDesktop td = new DialogDesktop("Desktop");
td.setSize(350, 250);
td.setVisible(true);
}
}
|