package untitled1;import java.awt.BorderLayout;
import java.awt.Dimension;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTree;
import java.awt.*;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.*;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.*;/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2007</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class Frame1 extends JFrame {
    JPanel contentPane;
    JTree jTree1;
    JLabel jLabel1 = new JLabel();
    JTextField jTextField1 = new JTextField();
    JLabel jLabel2 = new JLabel();
    JTextField jTextField2 = new JTextField();
    JLabel jLabel3 = new JLabel();
    JTextField jTextField3 = new JTextField();
    JButton jButton1 = new JButton();
    JButton jButton2 = new JButton();
    JLabel jLabel4 = new JLabel();
    JLabel jLabel5 = new JLabel();    public Frame1() {
        try {
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }    /**
     * Component initialization.
     *
     * @throws java.lang.Exception
     */
    private void jbInit() throws Exception {        contentPane = (JPanel) getContentPane();
        contentPane.setLayout(null);
        setSize(new Dimension(900, 800));
       
        setTitle("Frame Title");
        DefaultMutableTreeNode a = new DefaultMutableTreeNode("物美超市");
        DefaultMutableTreeNode b = new DefaultMutableTreeNode("肉类");
        DefaultMutableTreeNode c = new DefaultMutableTreeNode("蔬菜");
        DefaultMutableTreeNode d = new DefaultMutableTreeNode("水果");
        DefaultMutableTreeNode b1 = new DefaultMutableTreeNode("牛肉");
        DefaultMutableTreeNode b11 = new DefaultMutableTreeNode("一等牛肉");
        DefaultMutableTreeNode b12 = new DefaultMutableTreeNode("二等牛肉");
        DefaultMutableTreeNode b13 = new DefaultMutableTreeNode("三等牛肉");
        DefaultMutableTreeNode b2 = new DefaultMutableTreeNode("猪肉");
        DefaultMutableTreeNode b21 = new DefaultMutableTreeNode("一等猪肉");
        DefaultMutableTreeNode b22 = new DefaultMutableTreeNode("二等猪肉");
        DefaultMutableTreeNode b23 = new DefaultMutableTreeNode("三等猪肉");
        DefaultMutableTreeNode b3 = new DefaultMutableTreeNode("鱼肉");
        DefaultMutableTreeNode b31 = new DefaultMutableTreeNode("一等鱼肉");
        DefaultMutableTreeNode b32 = new DefaultMutableTreeNode("二等鱼肉");
        DefaultMutableTreeNode b33 = new DefaultMutableTreeNode("三等鱼肉");
        DefaultMutableTreeNode c1 = new DefaultMutableTreeNode("白菜");
        DefaultMutableTreeNode c11 = new DefaultMutableTreeNode("一等白菜");
        DefaultMutableTreeNode c12 = new DefaultMutableTreeNode("二等白菜");
        DefaultMutableTreeNode c13 = new DefaultMutableTreeNode("三等白菜");
        DefaultMutableTreeNode c2 = new DefaultMutableTreeNode("芹菜");
        DefaultMutableTreeNode c21 = new DefaultMutableTreeNode("一等芹菜");
        DefaultMutableTreeNode c22 = new DefaultMutableTreeNode("二等芹菜");
        DefaultMutableTreeNode c23 = new DefaultMutableTreeNode("三等芹菜");
        DefaultMutableTreeNode c3 = new DefaultMutableTreeNode("韭菜");
        DefaultMutableTreeNode c31 = new DefaultMutableTreeNode("一等韭菜");
        DefaultMutableTreeNode c32 = new DefaultMutableTreeNode("二等韭菜");
        DefaultMutableTreeNode c33 = new DefaultMutableTreeNode("三等韭菜");
        DefaultMutableTreeNode d1 = new DefaultMutableTreeNode("苹果");
        DefaultMutableTreeNode d11 = new DefaultMutableTreeNode("一等苹果");
        DefaultMutableTreeNode d12 = new DefaultMutableTreeNode("二等苹果");
        DefaultMutableTreeNode d13 = new DefaultMutableTreeNode("三等苹果");
        DefaultMutableTreeNode d2 = new DefaultMutableTreeNode("冻梨");
        DefaultMutableTreeNode d21 = new DefaultMutableTreeNode("一等冻梨");
        DefaultMutableTreeNode d22 = new DefaultMutableTreeNode("二等冻梨");
        DefaultMutableTreeNode d23 = new DefaultMutableTreeNode("三等冻梨");
        DefaultMutableTreeNode d3 = new DefaultMutableTreeNode("桃子");
        DefaultMutableTreeNode d31 = new DefaultMutableTreeNode("一等桃子");
        DefaultMutableTreeNode d32 = new DefaultMutableTreeNode("二等桃子");
        DefaultMutableTreeNode d33 = new DefaultMutableTreeNode("三等桃子");
        jLabel1.setBackground(Color.white);
        jLabel1.setFont(new java.awt.Font("Dialog", Font.PLAIN, 44));
        jLabel1.setText("商品名称");
        jLabel1.setBounds(new Rectangle(315, 25, 190, 79));
        jTextField1.setFont(new java.awt.Font("Dialog", Font.PLAIN, 44));
        jTextField1.setBounds(new Rectangle(509, 20, 369, 88));
        jLabel2.setFont(new java.awt.Font("Dialog", Font.PLAIN, 44));
        jLabel2.setText("商品单价");
        jLabel2.setBounds(new Rectangle(311, 137, 189, 94));
        jTextField2.setFont(new java.awt.Font("Dialog", Font.PLAIN, 44));
        jTextField2.setBounds(new Rectangle(509, 144, 296, 84));
        jLabel3.setFont(new java.awt.Font("Dialog", Font.PLAIN, 44));
        jLabel3.setText("请输入购买数量");
        jLabel3.setBounds(new Rectangle(306, 261, 318, 92));
        jTextField3.setFont(new java.awt.Font("Dialog", Font.PLAIN, 44));
        jTextField3.setBounds(new Rectangle(631, 271, 264, 80));
        jButton1.setBounds(new Rectangle(315, 381, 282, 126));
        jButton1.setFont(new java.awt.Font("Dialog", Font.PLAIN, 44));
        jButton1.setText("继续购买");
        jButton1.addActionListener(new Frame1_jButton1_actionAdapter(this));
        jButton2.setBounds(new Rectangle(616, 383, 282, 122));
        jButton2.setFont(new java.awt.Font("Dialog", Font.PLAIN, 44));
        jButton2.setText("确认购买");
        jButton2.addActionListener(new Frame1_jButton2_actionAdapter(this));
        jLabel4.setFont(new java.awt.Font("Dialog", Font.PLAIN, 44));
        jLabel4.setText("您应付的金额:");
        jLabel4.setBounds(new Rectangle(469, 515, 287, 81));
        jLabel5.setFont(new java.awt.Font("Dialog", Font.PLAIN, 44));
        jLabel5.setHorizontalAlignment(SwingConstants.CENTER);
        jLabel5.setBounds(new Rectangle(357, 583, 516, 129));
        a.add(b);
        a.add(c);
        a.add(d);
        b.add(b1);
        b.add(b2);
        b.add(b3);
        c.add(c1);
        c.add(c2);
        c.add(c3);
        d.add(d1);
        d.add(d2);
        d.add(d3);
        b1.add(b11);
        b1.add(b12);
        b1.add(b13);
        b2.add(b21);
        b2.add(b22);
        b2.add(b23);
        b3.add(b31);
        b3.add(b32);
        b3.add(b33);
        c1.add(c11);
        c1.add(c12);
        c1.add(c13);
        c2.add(c21);
        c2.add(c22);
        c2.add(c23);
        c3.add(c31);
        c3.add(c32);
        c3.add(c33);
        d1.add(d11);
        d1.add(d12);
        d1.add(d13);
        d2.add(d21);
        d2.add(d22);
        d2.add(d23);
        d3.add(d31);
        d3.add(d32);
        d3.add(d33);
        jTree1 = new JTree(a);
        jTree1.setBounds(new Rectangle(12, 8, 287, 782));
        jTree1.setFont(new java.awt.Font("Dialog", Font.PLAIN, 22));
         jTree1.addTreeSelectionListener(new Frame1_jTree1_treeSelectionAdapter(this));

解决方案 »

  1.   

    contentPane.add(jTree1);
            contentPane.add(jLabel1);
            contentPane.add(jTextField1);
            contentPane.add(jLabel2);
            contentPane.add(jTextField2);
            contentPane.add(jLabel3);
            contentPane.add(jTextField3);
            contentPane.add(jButton2);
            contentPane.add(jButton1);
            contentPane.add(jLabel4);
            contentPane.add(jLabel5);    }    public void jTree1_valueChanged(TreeSelectionEvent e) {
            try {
                DefaultMutableTreeNode node = (DefaultMutableTreeNode) jTree1.
                                              getLastSelectedPathComponent();            Object nodeInfo = node.getUserObject();
                if (node.isRoot()) {
                    jTextField1.setText(nodeInfo.toString());            } else {
                    if (node.isLeaf()) {
                        jTextField1.setText(nodeInfo.toString());
                        if (nodeInfo.toString().equals("一等牛肉")) {
                            jTextField2.setText("" + 30);
                        } else if (nodeInfo.toString().equals("二等牛肉")) {
                            jTextField2.setText("" + 25);
                        } else if (nodeInfo.toString().equals("三等牛肉")) {
                            jTextField2.setText("" + 20);
                        } else if (nodeInfo.toString().equals("一等猪肉")) {
                            jTextField2.setText("" + 25);
                        } else if (nodeInfo.toString().equals("二等猪肉")) {
                            jTextField2.setText("" + 20);                    } else if (nodeInfo.toString().equals("三等猪肉")) {
                            jTextField2.setText("" + 15);
                        } else if (nodeInfo.toString().equals("一等鱼肉")) {
                            jTextField2.setText("" + 45);
                        } else if (nodeInfo.toString().equals("二等鱼肉")) {
                            jTextField2.setText("" + 40);                    } else if (nodeInfo.toString().equals("三等鱼肉")) {
                            jTextField2.setText("" + 30);
                        } else if (nodeInfo.toString().equals("一等白菜")) {
                            jTextField2.setText("" + 20);
                        } else if (nodeInfo.toString().equals("二等白菜")) {
                            jTextField2.setText("" + 15);
                        } else if (nodeInfo.toString().equals("三等白菜")) {
                            jTextField2.setText("" + 10);
                        } else if (nodeInfo.toString().equals("一等芹菜")) {
                            jTextField2.setText("" + 25);                    } else if (nodeInfo.toString().equals("二等芹菜")) {
                            jTextField2.setText("" + 15);
                        } else if (nodeInfo.toString().equals("三等芹菜")) {
                            jTextField2.setText("" + 5);
                        } else if (nodeInfo.toString().equals("一等韭菜")) {
                            jTextField2.setText("" + 20);                    } else if (nodeInfo.toString().equals("二等韭菜")) {
                            jTextField2.setText("" + 15);
                        } else if (nodeInfo.toString().equals("三等韭菜")) {
                            jTextField2.setText("" + 10);
                        } else if (nodeInfo.toString().equals("一等苹果")) {
                            jTextField2.setText("" + 25);
                        } else if (nodeInfo.toString().equals("二等苹果")) {
                            jTextField2.setText("" + 15);
                        } else if (nodeInfo.toString().equals("三等苹果")) {
                            jTextField2.setText("" + 10);
                        } else if (nodeInfo.toString().equals("一等冻梨")) {
                            jTextField2.setText("" + 20);                    } else if (nodeInfo.toString().equals("二等冻梨")) {
                            jTextField2.setText("" + 15);
                        } else if (nodeInfo.toString().equals("三等冻梨")) {
                            jTextField2.setText("" + 10);
                        } else if (nodeInfo.toString().equals("一等桃子")) {
                            jTextField2.setText("" + 20);                    } else if (nodeInfo.toString().equals("二等桃子")) {
                            jTextField2.setText("" + 15);
                        } else if (nodeInfo.toString().equals("三等桃子")) {
                            jTextField2.setText("" + 12);
                        } else {
                            jTextField1.setText(nodeInfo.toString());                    }                }
                }
            } catch (Exception ex) {
                System.out.print(ex);        }
        }    int i4[];
        int v = 0;
        int c = 0;
        int h = 1;
        public void jButton1_actionPerformed(ActionEvent e) {        for (; c < h; c++) {
                int i1 = Integer.parseInt(jTextField2.getText());
                int i2 = Integer.parseInt(jTextField3.getText());
                int i3 = i1 * i2;            try {
                    i4[v] = i3;
                } catch (NullPointerException sr) {
                    System.out.println(sr);
                }
            }
            v++;
            h++;
            
            jTextField1.setText("");
            jTextField2.setText("");
            jTextField3.setText("");
        }    public void jButton2_actionPerformed(ActionEvent e) {
            if(jTextField2.getText().equals("") || jTextField3.getText().equals("")){
            
         jLabel5.setText("请输入购买数量");
            }
            int yu=0;
            try{
                for (int t = 0; t < i4.length; t++) {
            
                    yu+=i4[t];            }}catch (NullPointerException tr) {
                System.out.println(tr);
            }        int i1 = Integer.parseInt(jTextField2.getText());
                        int i2 = Integer.parseInt(jTextField3.getText());
                int i3 = i1 * i2;
                int cv=i3+yu;
                String s1 = Integer.toString(cv);
                            jLabel5.setText(s1);
        }         
            class Frame1_jTree1_treeSelectionAdapter implements
                    TreeSelectionListener {
                private Frame1 adaptee;
                Frame1_jTree1_treeSelectionAdapter(Frame1 adaptee) {
                    this.adaptee = adaptee;
                }            public void valueChanged(TreeSelectionEvent e) {
                    adaptee.jTree1_valueChanged(e);
                }
            }
        }
        class Frame1_jButton2_actionAdapter implements ActionListener {
            private Frame1 adaptee;
            Frame1_jButton2_actionAdapter(Frame1 adaptee) {
                this.adaptee = adaptee;
            }        public void actionPerformed(ActionEvent e) {
                adaptee.jButton2_actionPerformed(e);
            }
        }
        class Frame1_jButton1_actionAdapter implements ActionListener {
            private Frame1 adaptee;
            Frame1_jButton1_actionAdapter(Frame1 adaptee) {
                this.adaptee = adaptee;
            }        public void actionPerformed(ActionEvent e) {            adaptee.jButton1_actionPerformed(e);
            }
        }
      

  2.   

    谁知到怎么把yu的值提取出来
    yu总显示为0
      

  3.   

    关键的问题是i4没有初始化
    try {
                    i4[v] = i3;  //i4没有被new过,这里一直会出错的,动态数组不是这样用的,好好看看书吧
                } catch (NullPointerException sr) {
                    System.out.println(sr);
                }try{
                for (int t = 0; t < i4.length; t++) {
            
                    yu+=i4[t]; //和上面一个原因,这里也出错,所以yu就没有变化            }}catch (NullPointerException tr) {
                System.out.println(tr);
            }动态数组,要用的时候要声明长度的,如
    int[] a;
    a = new int[5]; //这里要new一下,否则怎么分配内存?
    for (int i=0; i<a.length; i++) {
        a[i] = i;
    }你这个程序,数组有多长你自己并不知道,所以可以考虑用集合类List,Vector等,如果非要用数组,那么可以这样改,在 for (; c < h; c++) { 之前加上以下代码
    if (i4 == null) {
        i4 = new int[v+1];
    } else {
        int[] tmp = new int[i4.length]; //定义一个临时数组
        System.arrayCopy(i4, 0, tmp, 0, i4.length); //把i4的元素复制给tmp
        i4 = new int[i4.length+1]; //重新申请i4的内存
        System.arrayCopy(tmp, 0, i4, 0, tmp.length); //把tmp的元素复制给i4
    }
    这样做效率太差,所以还是建议用集合类,把i4改为List或Vector吧
      

  4.   

    谢谢 阿宝
    我改了不少
    可以运行了
        ArrayList i4=new ArrayList(99);
        int v = 0;
        int c = 0;
        int h = 1;
        public void jButton1_actionPerformed(ActionEvent e) {        for (; c < h; c++) {
                int i1 = Integer.parseInt(jTextField2.getText());
                int i2 = Integer.parseInt(jTextField3.getText());
                int i3 = i1 * i2;            try {
                    i4.add(new Integer(i3));
                } catch (NullPointerException sr) {
                    System.out.println(sr);
                }
            }
            v++;
            h++;        jTextField1.setText("");
            jTextField2.setText("");
            jTextField3.setText("");
        }    public void jButton2_actionPerformed(ActionEvent e) {
            if (jTextField2.getText().equals("") || jTextField3.getText().equals("")) {            jLabel5.setText("请输入购买数量");
            }
            int yu = 0;        try {
                for (int t = 0; t < i4.size(); t++) {                yu =yu+Integer.parseInt(i4.get(t).toString());
                }
            } catch (NullPointerException tr) {
                System.out.println(tr);
            }
            try {
                int i1 = Integer.parseInt(jTextField2.getText());
                int i2 = Integer.parseInt(jTextField3.getText());
                int i3 = i1 * i2;
                int cv = i3 + yu;            String s1 = Integer.toString(cv);            jLabel5.setText(s1);
            } catch (NumberFormatException
                     vv) {
                System.out.println("有错误?O_o");
            }    }