从JFrame类继承到另一个类并使用变量

时间:2014-01-29 18:10:20

标签: java swing inheritance jbutton actionlistener

我是java的新手,我正在使用GUI开发一个程序。我的问题是我已经达到 1000 Line ,这很紧张,因为我的所有代码都在一个文件中。我不喜欢这个。所以我研究互联网关于继承。但是,我不确定这对我的问题有什么帮助,因为我所知道的继承继承了父类中的所有内容。但是,当我尝试在子类中使用变量时,我不能举例说,我在父类中有这样的东西:

JButton getButton = new JButton(“Enter”);

现在我去儿童班。我想继承并使用这个变量,所以我可以使用它不起作用的ActionListener。

那么可以告诉我,我在这里做错了什么,或者这不是正确的方法吗?

谢谢大家之前和之后。

以下是我的一些代码:

    public class H_Store extends JFrame {

    private JCheckBox groundMeatCheckBox;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    H_Store frame = new H_Store();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public H_Store() {
        super("Hussin Store");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 1378, 657);

        JMenuBar menuBar = new JMenuBar();
        setJMenuBar(menuBar);

        JMenu mnFile = new JMenu("File");
        menuBar.add(mnFile);

        JMenu mnHelp = new JMenu("Help");
        menuBar.add(mnHelp);
        mainPane = new JPanel();
        mainPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(mainPane);
        mainPane.setLayout(new GridLayout(0, 2, 0, 0));


        JPanel meetPanel = new JPanel();
        meetPanel.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null));
        mainPane.add(meetPanel);

        JLabel meatLabel = new JLabel("*Meat*");
        meatLabel.setBounds(546, 101, 79, 77);
        meatLabel.setHorizontalAlignment(SwingConstants.LEFT);
        meatLabel.setFont(new Font("Times New Roman", Font.PLAIN, 25));

        ///////////////////

        JCheckBox groundMeatCheckBox = new JCheckBox("Ground ");

        groundMeatCheckBox.setBounds(8, 71, 113, 25);
        groundMeatCheckBox.setVerticalAlignment(SwingConstants.BOTTOM);
        groundMeatCheckBox.setHorizontalAlignment(SwingConstants.LEFT);
        meetPanel.setLayout(null);
        meetPanel.add(meatLabel);
        meetPanel.add(groundMeatCheckBox);

        JCheckBox chuckMeatCheckBox = new JCheckBox("Chuck");
        chuckMeatCheckBox.setBounds(8, 126, 113, 25);
        meetPanel.add(chuckMeatCheckBox);

        JCheckBox ribMeatCheckBox = new JCheckBox("Rib");
        ribMeatCheckBox.setBounds(8, 101, 113, 25);
        meetPanel.add(ribMeatCheckBox);

        JCheckBox steakMeatCheckBox = new JCheckBox("Steak");
        steakMeatCheckBox.setBounds(8, 153, 120, 25);
        meetPanel.add(steakMeatCheckBox);

        JCheckBox flankMeatCheckBox = new JCheckBox("Flank");
        flankMeatCheckBox.setBounds(8, 183, 113, 25);
        meetPanel.add(flankMeatCheckBox);

        JCheckBox roundMeatCheckBox = new JCheckBox("Round");
        roundMeatCheckBox.setBounds(8, 213, 113, 25);
        meetPanel.add(roundMeatCheckBox);

        ground_M_QTextField = new JTextField(10);
        ground_M_QTextField.setText("0");
        ground_M_QTextField.setBounds(155, 76, 18, 16);
        meetPanel.add(ground_M_QTextField);
        ground_M_QTextField.setColumns(10);

        chuck_M_QTextField = new JTextField();
        chuck_M_QTextField.setText("0");
        chuck_M_QTextField.setColumns(10);
        chuck_M_QTextField.setBounds(155, 105, 18, 16);
        meetPanel.add(chuck_M_QTextField);

        rib_M_QTextField = new JTextField();
        rib_M_QTextField.setText("0");
        rib_M_QTextField.setColumns(10);
        rib_M_QTextField.setBounds(155, 130, 18, 16);
        meetPanel.add(rib_M_QTextField);

        steak_M_QTextField = new JTextField();
        steak_M_QTextField.setText("0");
        steak_M_QTextField.setColumns(10);
        steak_M_QTextField.setBounds(155, 157, 18, 16);
        meetPanel.add(steak_M_QTextField);

        flank_M_QTextField = new JTextField();
        flank_M_QTextField.setText("0");
        flank_M_QTextField.setColumns(10);
        flank_M_QTextField.setBounds(155, 187, 18, 16);
        meetPanel.add(flank_M_QTextField);

        round_M_QTextField = new JTextField();
        round_M_QTextField.setText("0");
        round_M_QTextField.setColumns(10);
        round_M_QTextField.setBounds(155, 217, 18, 16);
        meetPanel.add(round_M_QTextField);

        JLabel lblType = new JLabel("Type:");
        lblType.setFont(new Font("Tahoma", Font.BOLD, 13));
        lblType.setBounds(8, 46, 44, 16);
        meetPanel.add(lblType);

        JLabel lblNewLabel = new JLabel("Quantity:");
        lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 13));
        lblNewLabel.setBounds(155, 46, 61, 16);
        meetPanel.add(lblNewLabel);

        ground_M_WTextField = new JTextField();
        ground_M_WTextField.setText("0.00");
        ground_M_WTextField.setColumns(10);
        ground_M_WTextField.setBounds(291, 73, 36, 16);
        meetPanel.add(ground_M_WTextField);

        chuck_M_WTextField = new JTextField();
        chuck_M_WTextField.setText("0.00");
        chuck_M_WTextField.setColumns(10);
        chuck_M_WTextField.setBounds(291, 105, 36, 16);
        meetPanel.add(chuck_M_WTextField);

        rib_M_WTextField = new JTextField();
        rib_M_WTextField.setText("0.00");
        rib_M_WTextField.setColumns(10);
        rib_M_WTextField.setBounds(291, 130, 36, 16);
        meetPanel.add(rib_M_WTextField);

        steak_M_WTextField = new JTextField();
        steak_M_WTextField.setText("0.00");
        steak_M_WTextField.setColumns(10);
        steak_M_WTextField.setBounds(291, 157, 36, 16);
        meetPanel.add(steak_M_WTextField);

        flank_M_WTextField = new JTextField();
        flank_M_WTextField.setText("0.00");
        flank_M_WTextField.setColumns(10);
        flank_M_WTextField.setBounds(291, 187, 36, 16);
        meetPanel.add(flank_M_WTextField);

        round_M_WTextField = new JTextField();
        round_M_WTextField.setText("0.00");
        round_M_WTextField.setColumns(10);
        round_M_WTextField.setBounds(291, 217, 36, 16);
        meetPanel.add(round_M_WTextField);

        JLabel lblWeightlp = new JLabel("(LP) Weight: ");
        lblWeightlp.setFont(new Font("Tahoma", Font.BOLD, 13));
        lblWeightlp.setBounds(291, 46, 86, 16);
        meetPanel.add(lblWeightlp);

        at_M_QTextField = new JTextField();
        at_M_QTextField.setText("0");
        at_M_QTextField.setColumns(10);
        at_M_QTextField.setBounds(155, 251, 18, 16);
        meetPanel.add(at_M_QTextField);

        at_M_WTextField = new JTextField();
        at_M_WTextField.setText("0.00");
        at_M_WTextField.setColumns(10);
        at_M_WTextField.setBounds(291, 251, 36, 16);
        meetPanel.add(at_M_WTextField);

        at_meat_TextField = new JTextField();
        at_meat_TextField.setText("Another Type..");
        at_meat_TextField.setColumns(10);
        at_meat_TextField.setBounds(8, 250, 98, 24);
        meetPanel.add(at_meat_TextField);

        lblPrice = new JLabel("(LP)Price:");
        lblPrice.setFont(new Font("Tahoma", Font.BOLD, 13));
        lblPrice.setBounds(446, 46, 73, 16);
        meetPanel.add(lblPrice);

        ground_M_PTextField = new JTextField();
        ground_M_PTextField.setText("0.00");
        ground_M_PTextField.setColumns(10);
        ground_M_PTextField.setBounds(445, 71, 36, 16);
        meetPanel.add(ground_M_PTextField);

        rib_M_PTextField = new JTextField();
        rib_M_PTextField.setText("0.00");
        rib_M_PTextField.setColumns(10);
        rib_M_PTextField.setBounds(445, 103, 36, 16);
        meetPanel.add(rib_M_PTextField);

        chuck_M_PTextField = new JTextField();
        chuck_M_PTextField.setText("0.00");
        chuck_M_PTextField.setColumns(10);
        chuck_M_PTextField.setBounds(445, 128, 36, 16);
        meetPanel.add(chuck_M_PTextField);

        steak_M_PTextField = new JTextField();
        steak_M_PTextField.setText("0.00");
        steak_M_PTextField.setColumns(10);
        steak_M_PTextField.setBounds(445, 155, 36, 16);
        meetPanel.add(steak_M_PTextField);

        flank_M_PTextField = new JTextField();
        flank_M_PTextField.setText("0.00");
        flank_M_PTextField.setColumns(10);
        flank_M_PTextField.setBounds(445, 185, 36, 16);
        meetPanel.add(flank_M_PTextField);

        round_M_PTextField = new JTextField();
        round_M_PTextField.setText("0.00");
        round_M_PTextField.setColumns(10);
        round_M_PTextField.setBounds(445, 215, 36, 16);
        meetPanel.add(round_M_PTextField);

        at_M_PTextField = new JTextField();
        at_M_PTextField.setText("0.00");
        at_M_PTextField.setColumns(10);
        at_M_PTextField.setBounds(445, 249, 36, 16);
        meetPanel.add(at_M_PTextField);

        JPanel chikenPanel = new JPanel();
        chikenPanel.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, Color.BLUE, null, null));
        mainPane.add(chikenPanel);
        chikenPanel.setLayout(null);

        JLabel lblChiken = new JLabel("*Chiken*");
        lblChiken.setBounds(543, 104, 120, 77);
        lblChiken.setFont(new Font("Times New Roman", Font.PLAIN, 25));
        chikenPanel.add(lblChiken);

        JCheckBox whole_C_CheckBox = new JCheckBox("Whole");
        whole_C_CheckBox.setVerticalAlignment(SwingConstants.BOTTOM);
        whole_C_CheckBox.setHorizontalAlignment(SwingConstants.LEFT);
        whole_C_CheckBox.setBounds(12, 66, 113, 25);
        chikenPanel.add(whole_C_CheckBox);

        JCheckBox half_C_CheckBox = new JCheckBox("Half");
        half_C_CheckBox.setBounds(12, 96, 113, 25);
        chikenPanel.add(half_C_CheckBox);

        JCheckBox breast_C_CheckBox = new JCheckBox("Breast");
        breast_C_CheckBox.setBounds(12, 126, 113, 25);
        chikenPanel.add(breast_C_CheckBox);

        JCheckBox wings_C_CheckBox = new JCheckBox("Wings");
        wings_C_CheckBox.setBounds(12, 156, 120, 25);
        chikenPanel.add(wings_C_CheckBox);

        JCheckBox liver_C_CheckBox = new JCheckBox("Liver");
        liver_C_CheckBox.setBounds(12, 186, 113, 25);
        chikenPanel.add(liver_C_CheckBox);

        JCheckBox heart_C_CheckBox = new JCheckBox("Heart");
        heart_C_CheckBox.setBounds(12, 216, 113, 25);
        chikenPanel.add(heart_C_CheckBox);

        textField_13 = new JTextField();
        textField_13.setText("0");
        textField_13.setColumns(10);
        textField_13.setBounds(170, 71, 25, 16);
        chikenPanel.add(textField_13);

        textField_14 = new JTextField();
        textField_14.setText("0");
        textField_14.setColumns(10);
        textField_14.setBounds(170, 97, 25, 16);
        chikenPanel.add(textField_14);

        textField_15 = new JTextField();
        textField_15.setText("0");
        textField_15.setColumns(10);
        textField_15.setBounds(170, 130, 25, 16);
        chikenPanel.add(textField_15);

        textField_16 = new JTextField();
        textField_16.setText("0");
        textField_16.setColumns(10);
        textField_16.setBounds(170, 160, 25, 16);
        chikenPanel.add(textField_16);

        textField_17 = new JTextField();
        textField_17.setText("0");
        textField_17.setColumns(10);
        textField_17.setBounds(170, 190, 25, 16);
        chikenPanel.add(textField_17);

        textField_18 = new JTextField();
        textField_18.setText("0");
        textField_18.setColumns(10);
        textField_18.setBounds(170, 220, 25, 16);
        chikenPanel.add(textField_18);

        textField_19 = new JTextField();
        textField_19.setText("0.00");
        textField_19.setColumns(10);
        textField_19.setBounds(320, 220, 38, 16);
        chikenPanel.add(textField_19);

        textField_20 = new JTextField();
        textField_20.setText("0.00");
        textField_20.setColumns(10);
        textField_20.setBounds(320, 190, 38, 16);
        chikenPanel.add(textField_20);

        textField_21 = new JTextField();
        textField_21.setText("0.00");
        textField_21.setColumns(10);
        textField_21.setBounds(320, 157, 38, 16);
        chikenPanel.add(textField_21);

        textField_22 = new JTextField();
        textField_22.setText("0.00");
        textField_22.setColumns(10);
        textField_22.setBounds(320, 130, 38, 16);
        chikenPanel.add(textField_22);

        textField_23 = new JTextField();
        textField_23.setText("0.00");
        textField_23.setColumns(10);
        textField_23.setBounds(320, 100, 38, 16);
        chikenPanel.add(textField_23);

        textField_24 = new JTextField();
        textField_24.setText("0.00");
        textField_24.setColumns(10);
        textField_24.setBounds(320, 71, 38, 16);
        chikenPanel.add(textField_24);

        JLabel label = new JLabel("Type:");
        label.setFont(new Font("Tahoma", Font.BOLD, 13));
        label.setBounds(12, 41, 56, 16);
        chikenPanel.add(label);

        JLabel label_1 = new JLabel("Quantity:");
        label_1.setFont(new Font("Tahoma", Font.BOLD, 13));
        label_1.setBounds(170, 41, 75, 16);
        chikenPanel.add(label_1);

        JLabel label_2 = new JLabel("(LP) Weight: ");
        label_2.setFont(new Font("Tahoma", Font.BOLD, 13));
        label_2.setBounds(320, 41, 92, 16);
        chikenPanel.add(label_2);

        textField_12 = new JTextField();
        textField_12.setText("Another Type..");
        textField_12.setColumns(10);
        textField_12.setBounds(12, 250, 99, 24);
        chikenPanel.add(textField_12);

        textField_34 = new JTextField();
        textField_34.setText("0");
        textField_34.setColumns(10);
        textField_34.setBounds(170, 251, 25, 16);
        chikenPanel.add(textField_34);

        textField_35 = new JTextField();
        textField_35.setText("0.00");
        textField_35.setColumns(10);
        textField_35.setBounds(320, 251, 38, 16);
        chikenPanel.add(textField_35);

        label_5 = new JLabel("Price:");
        label_5.setFont(new Font("Tahoma", Font.BOLD, 13));
        label_5.setBounds(477, 41, 43, 16);
        chikenPanel.add(label_5);

        textField_7 = new JTextField();
        textField_7.setText("0.00");
        textField_7.setColumns(10);
        textField_7.setBounds(477, 71, 36, 16);
        chikenPanel.add(textField_7);

        textField_8 = new JTextField();
        textField_8.setText("0.00");
        textField_8.setColumns(10);
        textField_8.setBounds(477, 100, 36, 16);
        chikenPanel.add(textField_8);

        textField_9 = new JTextField();
        textField_9.setText("0.00");
        textField_9.setColumns(10);
        textField_9.setBounds(476, 130, 36, 16);
        chikenPanel.add(textField_9);

        textField_10 = new JTextField();
        textField_10.setText("0.00");
        textField_10.setColumns(10);
        textField_10.setBounds(476, 160, 36, 16);
        chikenPanel.add(textField_10);

        textField_11 = new JTextField();
        textField_11.setText("0.00");
        textField_11.setColumns(10);
        textField_11.setBounds(477, 190, 36, 16);
        chikenPanel.add(textField_11);

        textField_25 = new JTextField();
        textField_25.setText("0.00");
        textField_25.setColumns(10);
        textField_25.setBounds(477, 220, 36, 16);
        chikenPanel.add(textField_25);

        textField_32 = new JTextField();
        textField_32.setText("0.00");
        textField_32.setColumns(10);
        textField_32.setBounds(477, 254, 36, 16);
        chikenPanel.add(textField_32);

        JPanel otherThingsPanel = new JPanel();
        otherThingsPanel.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null));
        mainPane.add(otherThingsPanel);
        otherThingsPanel.setLayout(null);

        JLabel lblOtherThings = new JLabel("*Other Things*");
        lblOtherThings.setBounds(421, 117, 176, 42);
        lblOtherThings.setFont(new Font("Tahoma", Font.PLAIN, 25));
        otherThingsPanel.add(lblOtherThings);

        JLabel label_3 = new JLabel("Type:");
        label_3.setFont(new Font("Tahoma", Font.BOLD, 13));
        label_3.setBounds(16, 46, 65, 16);
        otherThingsPanel.add(label_3);

        JCheckBox chckbxCheese = new JCheckBox("Cheese");
        chckbxCheese.setVerticalAlignment(SwingConstants.BOTTOM);
        chckbxCheese.setHorizontalAlignment(SwingConstants.LEFT);
        chckbxCheese.setBounds(12, 71, 113, 25);
        otherThingsPanel.add(chckbxCheese);

        JCheckBox chckbxBread = new JCheckBox("Bread");
        chckbxBread.setBounds(12, 101, 113, 25);
        otherThingsPanel.add(chckbxBread);

        JCheckBox chckbxRice = new JCheckBox("Rice");
        chckbxRice.setBounds(12, 131, 113, 25);
        otherThingsPanel.add(chckbxRice);

        JCheckBox chckbxBeefBurger = new JCheckBox("Burger ");
        chckbxBeefBurger.setBounds(12, 161, 120, 25);
        otherThingsPanel.add(chckbxBeefBurger);

        JCheckBox chckbxChickenBurger = new JCheckBox("Kebab");
        chckbxChickenBurger.setBounds(12, 191, 113, 25);
        otherThingsPanel.add(chckbxChickenBurger);

        JCheckBox chckbxFalafel = new JCheckBox("Falafel");
        chckbxFalafel.setBounds(12, 221, 113, 25);
        otherThingsPanel.add(chckbxFalafel);

        textField_26 = new JTextField();
        textField_26.setText("0");
        textField_26.setColumns(10);
        textField_26.setBounds(165, 225, 25, 16);
        otherThingsPanel.add(textField_26);

        textField_27 = new JTextField();
        textField_27.setText("0");
        textField_27.setColumns(10);
        textField_27.setBounds(165, 195, 25, 16);
        otherThingsPanel.add(textField_27);

        textField_28 = new JTextField();
        textField_28.setText("0");
        textField_28.setColumns(10);
        textField_28.setBounds(165, 162, 25, 16);
        otherThingsPanel.add(textField_28);

        textField_29 = new JTextField();
        textField_29.setText("0");
        textField_29.setColumns(10);
        textField_29.setBounds(165, 132, 25, 16);
        otherThingsPanel.add(textField_29);

        textField_30 = new JTextField();
        textField_30.setText("0");
        textField_30.setColumns(10);
        textField_30.setBounds(165, 102, 25, 16);
        otherThingsPanel.add(textField_30);

        textField_31 = new JTextField();
        textField_31.setText("0");
        textField_31.setColumns(10);
        textField_31.setBounds(165, 76, 25, 16);
        otherThingsPanel.add(textField_31);

        JLabel label_4 = new JLabel("Quantity:");
        label_4.setFont(new Font("Tahoma", Font.BOLD, 13));
        label_4.setBounds(165, 46, 65, 16);
        otherThingsPanel.add(label_4);

        otherThings_AnotherTypeTextField = new JTextField();
        otherThings_AnotherTypeTextField.setText("Another Type..");
        otherThings_AnotherTypeTextField.setColumns(10);
        otherThings_AnotherTypeTextField.setBounds(16, 250, 93, 24);
        otherThingsPanel.add(otherThings_AnotherTypeTextField);

        textField_36 = new JTextField();
        textField_36.setText("0");
        textField_36.setColumns(10);
        textField_36.setBounds(165, 254, 25, 16);
        otherThingsPanel.add(textField_36);

        label_6 = new JLabel("Price:");
        label_6.setFont(new Font("Tahoma", Font.BOLD, 13));
        label_6.setBounds(310, 46, 56, 16);
        otherThingsPanel.add(label_6);

        textField_33 = new JTextField();
        textField_33.setText("0.00");
        textField_33.setColumns(10);
        textField_33.setBounds(309, 71, 36, 16);
        otherThingsPanel.add(textField_33);

        textField_37 = new JTextField();
        textField_37.setText("0.00");
        textField_37.setColumns(10);
        textField_37.setBounds(309, 103, 36, 16);
        otherThingsPanel.add(textField_37);

        textField_38 = new JTextField();
        textField_38.setText("0.00");
        textField_38.setColumns(10);
        textField_38.setBounds(309, 128, 36, 16);
        otherThingsPanel.add(textField_38);

        textField_39 = new JTextField();
        textField_39.setText("0.00");
        textField_39.setColumns(10);
        textField_39.setBounds(309, 155, 36, 16);
        otherThingsPanel.add(textField_39);

        textField_40 = new JTextField();
        textField_40.setText("0.00");
        textField_40.setColumns(10);
        textField_40.setBounds(309, 185, 36, 16);
        otherThingsPanel.add(textField_40);

        textField_41 = new JTextField();
        textField_41.setText("0.00");
        textField_41.setColumns(10);
        textField_41.setBounds(309, 215, 36, 16);
        otherThingsPanel.add(textField_41);

        textField_42 = new JTextField();
        textField_42.setText("0.00");
        textField_42.setColumns(10);
        textField_42.setBounds(309, 249, 36, 16);
        otherThingsPanel.add(textField_42);

        JPanel calculationPanel = new JPanel();
        calculationPanel.setBorder(new SoftBevelBorder(BevelBorder.LOWERED, null, null, null, null));
        mainPane.add(calculationPanel);
        calculationPanel.setLayout(null);

        JLabel lblCalculation = new JLabel("*Calculation*");
        lblCalculation.setBounds(212, 12, 148, 29);
        lblCalculation.setFont(new Font("Times New Roman", Font.PLAIN, 25));
        calculationPanel.add(lblCalculation);

        // Calculation everything

        JButton calculateButton = new JButton("Calculate");
        calculateButton.addActionListener(new CalcButtonListener());

        calculateButton.setFont(new Font("Tahoma", Font.PLAIN, 25));
        calculateButton.setBounds(340, 177, 313, 97);
        calculationPanel.add(calculateButton);

        txtrWriteYourComment = new JTextArea();
        txtrWriteYourComment.setRows(1);
        txtrWriteYourComment.setFont(new Font("Courier New", Font.PLAIN, 12));
        txtrWriteYourComment.setText("Write Your Comment here.....");
        txtrWriteYourComment.setBounds(12, 54, 641, 111);
        calculationPanel.add(txtrWriteYourComment);

        getProfitJButton = new JButton("Get Profit");
        getProfitJButton.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {

                JFrame frame2 = new JFrame("Profit");
                frame2.setVisible(true);
                frame2.setSize(350,200);
                frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);          
                profitPanel = new JPanel();
                profitPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
                setContentPane(profitPanel);
                profitPanel.setLayout(new GridLayout(0, 2, 0, 0));
                frame2.getContentPane().add(profitPanel);               


                profitFileButton = new JButton("Porfit File");

                profitFileTextField = new JTextField();


                getProfitJButton.addActionListener(new ActionListener() {
                    public void actionPerformed(ActionEvent e) {

                        profitJFileChooser = new JFileChooser();                
                        profitJFileChooser.showOpenDialog(null);                
                        File f = profitJFileChooser.getSelectedFile();
                        String fileName = f.getAbsolutePath();
                        profitFileTextField.setText(fileName);      

                    }
                });

                profitPanel.add(profitFileButton);
                profitPanel.add(profitFileTextField);

                sellFileButtton = new JButton("Sell File");
                profitPanel.add(sellFileButtton);


            }
        });
        getProfitJButton.setFont(new Font("Tahoma", Font.PLAIN, 25));
        getProfitJButton.setBounds(12, 177, 316, 97);
        calculationPanel.add(getProfitJButton);

        ///////////////////////////////////////////

        theholder holder = new theholder();
        groundMeatCheckBox.addItemListener(holder);



    }

    private class CalcButtonListener implements ActionListener{

        // vairbles for the ground Meat check box
        private double total_GM;
        private double weightPrice_1;
        private String stringQ;
        private String stringW;
        private String stringP;
        private int meat_Q1;
        private double meat_W1;
        private double meat_P1;

        public void actionPerformed(ActionEvent e){

            total_GM = 0;

            // The ground Meat check box calculation  

                stringQ = ground_M_QTextField.getText();
                meat_Q1 = Integer.parseInt(stringQ);

                stringW = ground_M_WTextField.getText();
                meat_W1 = Double.parseDouble(stringW);

                stringP = ground_M_PTextField.getText();
                meat_P1 = Double.parseDouble(stringP);

                weightPrice_1 = meat_W1 * meat_P1;
                total_GM += weightPrice_1  * meat_Q1;


                 JOptionPane.showMessageDialog(null, total_GM + "\n" + s);


        }

    }

}

我想要做的就是把最后一个代码带到另一个类或者做一些事情,所以我可以在Parent类中使用它,换句话说,我想在Parent类之外使用任何数学。

注意:我的意思是这段代码

private class CalcButtonListener implements ActionListener{

            // vairbles for the ground Meat check box
            private double total_GM;
            private double weightPrice_1;
            private String stringQ;
            private String stringW;
            private String stringP;
            private int meat_Q1;
            private double meat_W1;
            private double meat_P1;

            public void actionPerformed(ActionEvent e){

                total_GM = 0;

                // The ground Meat check box calculation  

                    stringQ = ground_M_QTextField.getText();
                    meat_Q1 = Integer.parseInt(stringQ);

                    stringW = ground_M_WTextField.getText();
                    meat_W1 = Double.parseDouble(stringW);

                    stringP = ground_M_PTextField.getText();
                    meat_P1 = Double.parseDouble(stringP);

                    weightPrice_1 = meat_W1 * meat_P1;
                    total_GM += weightPrice_1  * meat_Q1;


                     JOptionPane.showMessageDialog(null, total_GM + "\n" + s);


            }

        }

2 个答案:

答案 0 :(得分:4)

你说:

  

我的问题是我达到了1000 Line,这很紧张,因为我的所有代码都在一个文件中。我不喜欢这个。

你不喜欢这样,并尝试改进这个设置,因为这种类型的程序将是一个维护,调试和增强的怪物..

然后你说:

  

从JFrame类继承到另一个类并使用变量

这不是继承的原因,因为子类的对象将是与父类对象完全不同的实体,因此您不希望这样做。

相反

  • 请记住努力通过组合而不是继承来增强,这意味着让包含其他类的字段。
  • 避免使用static修饰符来制作类似全局的变量,因为这会使你的代码混乱。
  • 尝试从视觉,GUI部分
  • 中分解程序的逻辑部分
  • 将每个特定的逻辑部分和每个主要的GUI部分分成它自己的类。
  • 确保所有课程都有不错的setter和getter方法,
  • 并且编写了这些类,以便彼此之间能够很好地进行通信。
  • Swing特定建议是为了避免扩展JFrame。
  • 而是将你的Swing GUI设置为创建JPanels,面板可放置在你想要的任何地方,包括JFrames,JApplets,JDialogs,JOptionPanes,其他JPanels内部,JTabbedPanes,作为CardLayout中的“卡片” - 使用JPanel ,....
  • 这将极大地提高您的计划的灵活性和增强能力。

如需更具体的帮助,请随时提供有关您的计划及其代码的更多详细信息。


修改

很抱歉直言不讳,但是您已经就代码提出了建议,我必须告诉您它存在一些重大问题,包括:

  • 它包含更多不必要的冗余,这使得很难跟踪和调试。
  • 你有JTextFields的网格,所有这些都可以而且应该被三个JTable替换,一个用于Meat,一个用于Chicken,一个用于“其他东西”。
  • 您使用空布局和绝对定位,这似乎是新手更容易创建复杂GUI的方法,但从长远来看,这是创建,维护和升级这些内容的最困难方法。您最好不要学习和使用布局管理器,包括将每个JPanel嵌套到自己的布局中。
  • 每当我看到变量名为something12,something13,something14,something15,something16,something17,something18,...时,我认为其中大部分都可以被数组或集合替换,例如ArrayList,或者在你的情况下(如上所述),一个JTable,其模型基于集合。
  • 您的每个表条目都应该属于自己的类。
  • 我坚持我最初的建议,即你不应该从主GUI继承你的任何类,因为这将导致不可行的代码。
  • 此外,您的JFrame不应该启动另一个JFrame,而是getProfitButton应该启动一个模态JDialog。

修改
例如:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;

public class TableEg extends JPanel {
   private static final String[] ROW_TITLES = { "Sunday", "Monday", "Tuesday",
         "Wednesday", "Thursday", "Friday", "Saturday" };
   MyTableModel tableModel = new MyTableModel(ROW_TITLES);
   private JTable table;

   public TableEg() {
      table = new JTable(tableModel) {
         @Override
         public TableCellRenderer getCellRenderer(int row, int column) {
            JComponent renderer = (JComponent) super.getCellRenderer(row,
                  column);
            boolean enabled = (Boolean) table.getValueAt(row, 0);
            renderer.setEnabled(enabled);
            return super.getCellRenderer(row, column);
         }
      };
      table.addMouseListener(new MouseAdapter() {
         @Override
         public void mouseReleased(MouseEvent e) {
            super.mouseReleased(e);
            SwingUtilities.invokeLater(new Runnable() {
               public void run() {
                  table.repaint();
               }
            });
         }
      });

      JScrollPane scrollpane = new JScrollPane(table);
      scrollpane.getViewport().setPreferredSize(table.getPreferredSize());

      JButton getSumButton = new JButton(new GetSumAction("Get Sum", tableModel));
      JPanel southPanel = new JPanel();
      southPanel.add(getSumButton);

      setLayout(new BorderLayout());
      add(scrollpane, BorderLayout.CENTER);
      add(southPanel, BorderLayout.SOUTH);
   }

   private static void createAndShowGui() {
      TableEg mainPanel = new TableEg();

      JFrame frame = new JFrame("TableEg");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.getContentPane().add(mainPanel);
      frame.pack();
      frame.setLocationByPlatform(true);
      frame.setVisible(true);
   }

   public static void main(String[] args) {
      SwingUtilities.invokeLater(new Runnable() {
         public void run() {
            createAndShowGui();
         }
      });
   }
}

class MyTableModel extends DefaultTableModel {
   private static final String[] COLUMN_NAMES = { "Selected", "Name", "Number" };

   public MyTableModel(String[] rowTitles) {
      super(COLUMN_NAMES, 0);
      for (int i = 0; i < rowTitles.length; i++) {
         Object[] rowData = { Boolean.FALSE, rowTitles[i], Integer.valueOf(0) };
         addRow(rowData);
      }
      Object[] rowData = { Boolean.FALSE, "", Integer.valueOf(0) };
      addRow(rowData);
   }

   @Override
   public boolean isCellEditable(int row, int column) {
      if (column == 0) {
         return true;
      }

      if (column == 1) {
         return row >= getRowCount() - 1;
      }

      if (column > 1) {
         return ((Boolean) getValueAt(row, 0)).booleanValue();
      }
      return super.isCellEditable(row, column);
   }

   @Override
   public Class<?> getColumnClass(int columnIndex) {
      switch (columnIndex) {
      case 0:
         return Boolean.class;
      case 1:
         return String.class;
      case 2:
         return Integer.class;
      }
      return super.getColumnClass(columnIndex);
   }
}

class GetSumAction extends AbstractAction {

   private MyTableModel tableModel;

   public GetSumAction(String name, MyTableModel tableModel) {
      super(name);
      this.tableModel = tableModel;
   }

   @Override
   public void actionPerformed(ActionEvent evt) {
      int sum = 0;
      for (int i = 0; i < tableModel.getRowCount(); i++) {
         Object value = tableModel.getValueAt(i, 2);
         if (value != null) {
            sum += ((Integer) value).intValue();
         }
      }
      String text = "Number of days: " + sum;
      String title = "Number of Days";
      JOptionPane.showMessageDialog((JButton) evt.getSource(), text, title,
            JOptionPane.INFORMATION_MESSAGE);
   }
}

答案 1 :(得分:0)

首先尝试将代码划分为方法,这样可以使代码更清晰。 至于继承,如果这些变量是:那么只能修改子类中父类的变量: .Data成员 .Their可见性设置为受保护 这是一个例子

public class Parent{
protected JButton button; 
protected int something; 
protected String whatever;
//^Those are the data members
public Parent(){//Constructor
//some code here
}

//more code
}//end of parent class

public class Child extends Parent{
private int randomstuff;
private String morerandomDatamembers;
public Child(){
super();
}

public void modify(){
something=3;
whatever="yayyy it worked";

         }
}

受保护的数据成员只能由某些类的子级访问。 编辑 - 继承可用于特定情况。您仍然可以从其他类修改某些类的数据成员。每个方法都应该有getter和setter。 例如:

public class Car{
private int ModelNumber; 
private String CarName; 

public Car(int ModelNum,String name){
ModelNumber=ModelNum;
CarName=name;

}
public int getModelNum(){//First getter
return ModelNumber;
}
public void setModelNum(int ModelNum){//First setter
ModelNumber=ModelNum;
}
public String getCarName(){//Second getter;
return CarName;
}
public void setCarName(String Car){
CarName=Car;
}
}
public class Company{
private Car car;
public Company(Car c){
car=c;

}
public void modify(){
car.setModelNum(123);
car.setCarName("Ferrari");
System.out.println("Being so awesome,Roudy will let me try his Ferrari");

}
}