2014-01-29 3 views
1

Я новичок в java, и я работаю над программой, использующей GUI. Моя проблема в том, что я достигаю 1000 Line, и это стрессово, потому что весь мой код находится в одном файле. Мне это не нравится. Поэтому я исследую Интернет о Наследии. Тем не менее, я не уверен, как это может помочь мне в моей проблеме, потому что все, что я знаю о наследстве, наследует все в родительском классе. Однако, когда я пытаюсь использовать переменные в дочернем классе, я не могу, например, сказать, что у меня в родительском классе что-то вроде этого:Наследование от класса 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); 


     } 

    } 

} 

То, что я хочу сделать именно это сделать последний код в другой класс или сделать что-то с так что я могу использовать его в классе 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); 


      } 

     } 
+0

Привет, вы можете разместить несколько примеров кода и, возможно, я могу вам помочь ... –

ответ

4

Вы заявляете:

Моя проблема заключается в том, что я тянусь 1000 линии, и это стрессовые, потому что весь мой код в одном файле. Мне это не нравится.

Вы совершенно правы, не нравится, и попытаться улучшить это настроить как этот тип программы будет монстром поддерживать, отлаживать и улучшать ..

Вы тогда состояние:

наследование от класса JFrame к другому классу и с помощью переменных

Это не то, что наследование для как объекты класса ребенка будет совершенно различны entit от объектов родительского класса, поэтому вы не захотите этого делать.

Вместо

  • Помните стремиться к повышению по составу, а не наследование, смысл есть классы содержат поля других классов.
  • Избегайте использования статического модификатора для создания глобальных переменных, поскольку это приведет к зависанию вашего кода.
  • попытайтесь вырвать логические части вашей программы из визуальных частей GUI,
  • И разделите каждую конкретную логическую часть и каждую главную часть графического интерфейса в свой собственный класс.
  • убедитесь, что все классы имеют приличные методы настройки и получения,
  • и что классы написаны так, что они хорошо общаются друг с другом.
  • Специальная рекомендация Swing заключается в том, чтобы избежать расширения JFrame.
  • Вместо этого передайте свой графический интерфейс Swing для создания JPanels, панелей, которые можно разместить в любом месте, в том числе в JFrames, JApplets, JDialogs, JOptionPanes, внутри других JPanels, в JTabbedPanes, в качестве «карт» в CardLayout, используя JPanel , ....
  • Это значительно улучшит гибкость и улучшит вашу программу.

Для получения более конкретной помощи, пожалуйста, не стесняйтесь предоставлять более подробную информацию о вашей программе и ее коде.


Редактировать

Жаль быть тупым, но вы пришли за советом на код, и я должен сообщить вам, что у него есть какие-то серьезные проблемы, включая:

  • он содержит больше ненужной избыточности, из-за чего трудно следовать и отлаживать.
  • У вас есть сетки JTextFields, все из которых могут и должны быть заменены тремя JTables, один для Meat, один для Chicken и один для «других вещей».
  • Вы используете нулевые макеты и абсолютное позиционирование, что кажется новичку более простым способом создания сложных графических интерфейсов, но в конечном итоге это самый сложный способ создания, обслуживания и обновления. Вам намного лучше узнать и использовать менеджеров компоновки, в том числе вложенные JPanels с собственным макетом.
  • Каждый раз, когда я вижу переменные с именем something12, something13, something14, something15, something16, something17, something18, ... Я думаю, что большую часть этого можно заменить массивом или коллекцией, например ArrayList, или в вашем случае (как отмечалось выше), JTable, модель которого основана в коллекции.
  • Каждая из ваших табличных записей, вероятно, должна быть в своем классе.
  • Я согласен с тем, что вы не должны наследовать ни один из ваших классов из основного графического интерфейса, поскольку это приведет к неработоспособному коду.
  • Кроме того, ваш 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: см. править для ответа. И вы не должны следовать совету Руди о наследовании, поскольку он не применим к вашей проблеме. –

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

     } 
} 

охраняемых к членам данных могут обращаться только дети какого-либо класса. EDIT-Inheritance может использоваться в определенных случаях. Вы все же можете модифицировать элементы данных какого-либо класса из другого класса. Каждый метод должен иметь геттеры и сеттеры. Пример:

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

Смежные вопросы