📄 wizard.java
字号:
package com.nexes.wizard;
import java.awt.*;
import java.awt.event.*;
import java.beans.*;
import java.util.*;
import java.net.*;
import javax.swing.*;
import javax.swing.border.*;
/**
* This class implements a basic wizard dialog, where the programmer can
* insert one or more Components to act as panels. These panels can be navigated
* through arbitrarily using the 'Next' or 'Back' buttons, or the dialog itself
* can be closed using the 'Cancel' button. Note that even though the dialog
* uses a CardLayout manager, the order of the panels is not linear. Each panel
* determines at runtime what its next and previous panel will be.
*/
public class Wizard extends WindowAdapter implements PropertyChangeListener {
/**
* Indicates that the 'Finish' button was pressed to close the dialog.
*/
public static final int FINISH_RETURN_CODE = 0;
/**
* Indicates that the 'Cancel' button was pressed to close the dialog, or
* the user pressed the close box in the corner of the window.
*/
public static final int CANCEL_RETURN_CODE = 1;
/**
* Indicates that the dialog closed due to an internal error.
*/
public static final int ERROR_RETURN_CODE = 2;
/**
* The String-based action command for the 'Next' button.
*/
public static final String NEXT_BUTTON_ACTION_COMMAND = "NextButtonActionCommand";
/**
* The String-based action command for the 'Back' button.
*/
public static final String BACK_BUTTON_ACTION_COMMAND = "BackButtonActionCommand";
/**
* The String-based action command for the 'Cancel' button.
*/
public static final String CANCEL_BUTTON_ACTION_COMMAND = "CancelButtonActionCommand";
// The i18n text used for the buttons. Loaded from a property resource file.
static String BACK_TEXT;
static String NEXT_TEXT;
static String FINISH_TEXT;
static String CANCEL_TEXT;
// The image icons used for the buttons. Filenames are loaded from a property resource file.
static Icon BACK_ICON;
static Icon NEXT_ICON;
static Icon FINISH_ICON;
static Icon CANCEL_ICON;
private WizardModel wizardModel;
private WizardController wizardController;
private JDialog wizardDialog;
private JPanel cardPanel;
private CardLayout cardLayout;
private JButton backButton;
private JButton nextButton;
private JButton cancelButton;
private int returnCode;
/**
* Default constructor. This method creates a new WizardModel object and passes it
* into the overloaded constructor.
*/
public Wizard() {
this((Frame)null);
}
/**
* This method accepts a java.awt.Dialog object as the javax.swing.JDialog's
* parent.
* @param owner The java.awt.Dialog object that is the owner of this dialog.
*/
public Wizard(Dialog owner) {
wizardModel = new WizardModel();
wizardDialog = new JDialog(owner);
initComponents();
}
/**
* This method accepts a java.awt.Frame object as the javax.swing.JDialog's
* parent.
* @param owner The java.awt.Frame object that is the owner of the javax.swing.JDialog.
*/
public Wizard(Frame owner) {
wizardModel = new WizardModel();
wizardDialog = new JDialog(owner);
initComponents();
}
/**
* Returns an instance of the JDialog that this class created. This is useful in
* the event that you want to change any of the JDialog parameters manually.
* @return The JDialog instance that this class created.
*/
public JDialog getDialog() {
return wizardDialog;
}
/**
* Returns the owner of the generated javax.swing.JDialog.
* @return The owner (java.awt.Frame or java.awt.Dialog) of the javax.swing.JDialog generated
* by this class.
*/
public Component getOwner() {
return wizardDialog.getOwner();
}
/**
* Sets the title of the generated javax.swing.JDialog.
* @param s The title of the dialog.
*/
public void setTitle(String s) {
wizardDialog.setTitle(s);
}
/**
* Returns the current title of the generated dialog.
* @return The String-based title of the generated dialog.
*/
public String getTitle() {
return wizardDialog.getTitle();
}
/**
* Sets the modality of the generated javax.swing.JDialog.
* @param b the modality of the dialog
*/
public void setModal(boolean b) {
wizardDialog.setModal(b);
}
/**
* Returns the modality of the dialog.
* @return A boolean indicating whether or not the generated javax.swing.JDialog is modal.
*/
public boolean isModal() {
return wizardDialog.isModal();
}
/**
* Convienence method that displays a modal wizard dialog and blocks until the dialog
* has completed.
* @return Indicates how the dialog was closed. Compare this value against the RETURN_CODE
* constants at the beginning of the class.
*/
public int showModalDialog() {
wizardDialog.setModal(true);
wizardDialog.pack();
// Workaround against problem in new version of swingx-0.9.2
wizardDialog.setSize(650, wizardDialog.getHeight());
// Cheok : Display location should be relative to the owner.
wizardDialog.setLocationRelativeTo(this.getOwner());
wizardDialog.setVisible(true);
return returnCode;
}
/**
* Returns the current model of the wizard dialog.
* @return A WizardModel instance, which serves as the model for the wizard dialog.
*/
public WizardModel getModel() {
return wizardModel;
}
/**
* Add a Component as a panel for the wizard dialog by registering its
* WizardPanelDescriptor object. Each panel is identified by a unique Object-based
* identifier (often a String), which can be used by the setCurrentPanel()
* method to display the panel at runtime.
* @param id An Object-based identifier used to identify the WizardPanelDescriptor object.
* @param panel The WizardPanelDescriptor object which contains helpful information about the panel.
*/
public void registerWizardPanel(Object id, WizardPanelDescriptor panel) {
// Add the incoming panel to our JPanel display that is managed by
// the CardLayout layout manager.
cardPanel.add(panel.getPanelComponent(), id);
// Set a callback to the current wizard.
panel.setWizard(this);
// Place a reference to it in the model.
wizardModel.registerPanel(id, panel);
}
/**
* Displays the panel identified by the object passed in. This is the same Object-based
* identified used when registering the panel.
* @param id The Object-based identifier of the panel to be displayed.
*/
public void setCurrentPanel(Object id) {
// Get the hashtable reference to the panel that should
// be displayed. If the identifier passed in is null, then close
// the dialog.
if (id == null)
close(ERROR_RETURN_CODE);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -