⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jshop2gui.java

📁 SHOP2 一个人工智能里面关于任务分解和任务规划的系统。JSHOP2是其java版本。
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
        }
        
        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 + -