📄 jshop2gui.java
字号:
}
public String getState() {
String retval = null;
// the state is unknown
if ( state == null)
retval = "Unknown";
// the state is empty
else if ( state.size() == 0 ) {
retval = "";
} else {
retval = state.get(0);
for ( int i=1; i < state.size(); i++ ) {
retval += "\n";
retval += state.get(i);
}
}
return retval;
}
public String getStateSize() {
String retval = null;
// if the state is unknown
if ( state == null )
retval = "--";
// if the state is known
else
retval = String.valueOf( state.size() );
return retval;
}
}
//-----------------------------------------------------------------------------
/**
* Object used to render the nodes in the tree
*/
private class NodeRenderer extends DefaultTreeCellRenderer {
private static final long serialVersionUID = 112832007;
ImageIcon yellowBall, blueBall, smYellowBall, smBlueBall;
public NodeRenderer() {
yellowBall = new ImageIcon( "images/yellow.gif" );
blueBall = new ImageIcon( "images/blue.gif" );
smYellowBall = new ImageIcon( "images/small-yellow.gif" );
smBlueBall = new ImageIcon( "images/small-blue.gif" );
}
public Component getTreeCellRendererComponent(
JTree tree,
Object value,
boolean sel,
boolean expanded,
boolean leaf,
int row,
boolean hasFocus) {
super.getTreeCellRendererComponent(
tree, value, sel,
expanded, leaf, row,
hasFocus);
if ( value instanceof DefaultMutableTreeNode ) {
DefaultMutableTreeNode treeNode = (DefaultMutableTreeNode)value;
if ( isOrdered(treeNode) ) {
if ( isVisited(treeNode) ) {
setIcon( yellowBall );
setToolTipText( "Ordered, Visited" );
} else {
setIcon( smYellowBall );
setToolTipText( "Ordered, Unvisited" );
}
} else {
if ( isVisited(treeNode) ) {
setIcon( blueBall );
setToolTipText( "Unordered, Visited" );
} else {
setIcon( smBlueBall );
setToolTipText( "Unordered, Unvisited" );
}
}
}
return this;
}
private boolean isOrdered( DefaultMutableTreeNode treeNode ) {
if ( treeNode.getUserObject() instanceof Node ) {
Node node = (Node)treeNode.getUserObject();
return node.ordered;
} else
return false;
}
private boolean isVisited( DefaultMutableTreeNode treeNode ) {
if ( treeNode.getUserObject() instanceof Node ) {
Node node = (Node)treeNode.getUserObject();
return node.hasState();
} else
return false;
}
}
//-----------------------------------------------------------------------------
/**
* The object that creates the dialog box showing plan results whenever
* a plan is found.
*/
private class PlanDialog extends JDialog {
private static final long serialVersionUID = 112832008;
public PlanDialog( String title, ArrayList<String> plan ) {
setTitle( title );
getContentPane().setLayout( new FlowLayout(FlowLayout.CENTER, 5, 20) );
// Creating message string to display in text area
String msg = "";
for ( int i = 0; i < plan.size(); i++ ) {
msg += plan.get(i);
msg += "\n";
}
// Creating the text area that will display the plan
TextArea textBox = new TextArea( msg, 24, 63 );
textBox.setEditable( false );
// Creating the "Close" button
JButton closeButton = new JButton( " Close " );
closeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
// Adding components to the dialog box
getContentPane().add( textBox );
getContentPane().add( closeButton );
setSize( new Dimension(500,500) );
// Center dialog box
int x = (screenSize.width - getWidth()) / 2;
int y = (screenSize.height - getHeight()) / 2;
setLocation(x, y);
setVisible(true);
}
}
//-----------------------------------------------------------------------------
private class StateWindowDialog extends JDialog {
private static final long serialVersionUID = 112832009;
public StateWindowDialog( String title ) {
setTitle( title );
getContentPane().setLayout( new FlowLayout(FlowLayout.CENTER, 5, 20) );
// Creating the text area that will display the plan
TextArea textBox = new TextArea( stateTextArea.getText(), 24, 63 );
textBox.setEditable( false );
// Creating the "Close" button
JButton closeButton = new JButton( " Close " );
closeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dispose();
}
});
// Adding components to the dialog box
getContentPane().add( textBox );
getContentPane().add( closeButton );
setSize( new Dimension(500,500) );
// Center dialog box
int x = (screenSize.width - getWidth()) / 2;
int y = (screenSize.height - getHeight()) / 2;
setLocation(x, y);
setVisible(true);
}
}
//-----------------------------------------------------------------------------
/**
* The object that creates the leaf node tracker dialog box.
*/
private class LeafTrackerDialog extends JDialog {
private static final long serialVersionUID = 112832010;
private Label leafTotalLabel;
private TextField leafNumberField;
public LeafTrackerDialog( Frame parent ) {
super( parent, "Leaf Node Tracker" );
getContentPane().setLayout( new BorderLayout() );
// adding leafTotalLabel
leafTotalLabel = new Label("Leaf Nodes: 0");
getContentPane().add( leafTotalLabel, BorderLayout.NORTH );
// creating a new border layout container for the input text field
JPanel innerPanel_1 = new JPanel();
getContentPane().add( innerPanel_1, BorderLayout.CENTER );
innerPanel_1.setLayout( new BorderLayout() );
JPanel innerPanel_2 = new JPanel();
innerPanel_1.add( innerPanel_2, BorderLayout.NORTH );
innerPanel_2.setLayout( new GridLayout(1,0) );
innerPanel_2.add( new Label("Leaf number:") );
leafNumberField = new TextField("1");
innerPanel_2.add( leafNumberField );
// creating a new border layout container for the buttons
innerPanel_2 = new JPanel();
innerPanel_1.add( innerPanel_2, BorderLayout.CENTER );
innerPanel_2.setLayout( new BorderLayout() );
JPanel innerPanel_3 = new JPanel();
innerPanel_2.add( innerPanel_3, BorderLayout.NORTH );
innerPanel_3.setLayout( new GridLayout(1,0) );
// adding buttons
JButton prevButton = new JButton("Prev");
prevButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int leafNum = ( Integer.valueOf(leafNumberField.getText()) ).intValue();
leafNum--;
if ( leafNum > 0 && leafNum <= leafNodes.size() ) {
leafNumberField.setText( String.valueOf(leafNum) );
DefaultMutableTreeNode treeNode = leafNodes.get(leafNum - 1);
tree.setSelectionPath(new TreePath(treeNode.getPath())); // selects the node
tree.scrollPathToVisible(new TreePath(treeNode.getPath())); // makes the node visible
}
}
});
JButton findButton = new JButton("Find");
findButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int leafNum = ( Integer.valueOf(leafNumberField.getText()) ).intValue();
if ( leafNum > 0 && leafNum <= leafNodes.size() ) {
DefaultMutableTreeNode treeNode = leafNodes.get(leafNum - 1);
tree.setSelectionPath(new TreePath(treeNode.getPath())); // selects the node
tree.scrollPathToVisible(new TreePath(treeNode.getPath())); // makes the node visible
}
}
});
JButton nextButton = new JButton("Next");
nextButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int leafNum = ( Integer.valueOf(leafNumberField.getText()) ).intValue();
leafNum++;
if ( leafNum > 0 && leafNum <= leafNodes.size() ) {
leafNumberField.setText( String.valueOf(leafNum) );
DefaultMutableTreeNode treeNode = leafNodes.get(leafNum - 1);
tree.setSelectionPath(new TreePath(treeNode.getPath())); // selects the node
tree.scrollPathToVisible(new TreePath(treeNode.getPath())); // makes the node visible
}
}
});
innerPanel_3.add( prevButton );
innerPanel_3.add( nextButton );
innerPanel_3.add( findButton );
setSize( new Dimension(200,110) );
// Center dialog box
int x = (screenSize.width - getWidth()) / 2;
int y = (screenSize.height - getHeight()) / 2;
setLocation(x, y);
}
public void visible( boolean in ) {
setVisible( in );
}
public void updateNodeCount() {
String msg = "Leaf Nodes Total: ";
msg += String.valueOf(leafNodes.size());
leafTotalLabel.setText( msg );
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -