2014-01-29 40 views
1

我是新來的Java,我正在使用GUI的程序工作。我的問題是,我到達1000行,這是有壓力的,因爲我的所有代碼都在一個文件中。我不喜歡這個。所以我研究互聯網關於繼承。但是,我不知道這是如何幫助我解決問題的,因爲我知道的關於繼承的所有知識繼承了父類中的所有內容。然而,當我嘗試在子類中使用變量時,例如我不能說我在父類中有這樣的事情:從JFrame類繼承到另一個類,並使用變量

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); 


     } 

    } 

} 

我想要做的恰恰是把最後的代碼到另一個類或做一些事情,所以我可以在父類中使用它,換句話說任何我想要的父類外的數學。

注:我的意思是這個代碼

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); 


      } 

     } 
+0

嗨,你可以發表你的代碼的幾個例子,也許我可以幫你... –

回答

4

幽州:

我的問題是,我在達到1000線,並因爲我所有的代碼都在一個文件中,這是有壓力的。我不喜歡這個。

你說得很對不喜歡這一點,並試圖改善這一設置,因爲這類型的節目將是維護,調試和增強怪物..

您當時的國家:

從JFrame類到另一個類繼承,並使用變量

這不是繼承是作爲子類的對象將是一個完全不同entit從父類的對象中刪除,所以你不會想要這樣做。

相反

  • 記住要力爭組成,而不是繼承,含義,以提高有包含其他類的領域類。
  • 避免使用靜態修飾符來製作類似全局的變量,因爲這樣可以大大增強您的代碼。
  • 嘗試從視覺,GUI部件中分解程序的邏輯部分,然後將每個特定的邏輯部分和每個主要的GUI部件分成它自己的類。
  • 確保所有的課程都有不錯的二傳手和吸氣器方法,
  • ,並且這些類的編寫使得它們可以相互交流。
  • Swing特定的建議是爲了避免擴展JFrame。
  • 取而代之的是將您的Swing GUI用於創建JPanels,面板可放置在您希望的任何位置,包括Jabrame,JApplets,JDialogs,JOptionPanes,JTabbedPanes中的其他JPanels內部,CardLayout中的「cards」 - 使用JPanel ,....
  • 這將大大提高程序的靈活性和增強能力。

如需更具體的幫助,請隨時提供有關您的程序及其代碼的更多詳細信息。


編輯

對不起,是生硬的,但你來對你的代碼的意見,我必須告訴你,它有一些顯著的問題包括:

  • 它包含了更多的不必要的redundency,使得它很難跟蹤和調試。
  • 你有JTextFields的網格,所有這些都可以並且應該被三個JTables替換,一個用於肉,一個用於雞,另一個用於「其他事物」。
  • 您使用空佈局和絕對定位,這似乎是一個新手創建複雜的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); 
    } 
} 
+0

我明白你的意思,但是當它來找我時,我試圖分裂代碼,我書面。我有點迷惑不解了。請看我的代碼 – dragon3002

+0

@ user3250029:請看編輯回答。你不應該遵循Roudy關於繼承的建議,因爲它不適用於你的問題。 –

0

首先嚐試你的代碼分成方法,這將使你的代碼更清晰。 至於繼承,你只能修改是從子類的父類,如果這些變量是變量: 。數據成員 。他們的可見性設置爲保護 下面是一個例子

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"); 

} 
} 
+0

非常感謝。我想我明白了。然而,我很難理解,如果我有一個GUI類作爲父,我想使用ActionListener,ItemListener等,請看我的代碼。 – dragon3002