2016-11-17 4 views
-1

У меня есть подкласс, но проблема в том, что по какой-то причине он не наследует поля основного класса. Я попытался сделать публикацию вместо частной (хотя вы все равно должны иметь доступ к закрытым полям из подклассов), но даже это не сработало.Подкласс не наследует поля родительского класса

package com.testfoler; 

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Font; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

public class Fenetre extends JFrame { 

    private Panneau pan = new Panneau(); 
    public JButton bouton = new JButton("Go"); 
    public JButton bouton2 = new JButton("Stop"); 
    private JPanel container = new JPanel(); 
    private JLabel label = new JLabel("Le JLabel"); 

    public Fenetre() { 
     this.setTitle("Animation"); 
     this.setSize(300, 300); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     this.setLocationRelativeTo(null); 

     container.setBackground(Color.white); 
     container.setLayout(new BorderLayout()); 
     container.add(pan, BorderLayout.CENTER); 
     bouton.addActionListener(new BoutonListener()); 
     bouton.setEnabled(false); 
     bouton2.addActionListener(new Bouton2Listener()); 

     JPanel south = new JPanel(); 
     south.add(bouton); 
     south.add(bouton2); 
     container.add(south, BorderLayout.SOUTH); 
     Font police = new Font("Tahoma", Font.BOLD, 16); 
     label.setFont(police); 
     label.setForeground(Color.blue); 
     label.setHorizontalAlignment(JLabel.CENTER); 
     container.add(label, BorderLayout.NORTH); 
     this.setContentPane(container); 
     this.setVisible(true); 
    } 
} 

// Those are the subclasses 
class BoutonListener implements ActionListener { 
    public void actionPerformed(ActionEvent arg0) { 
     bouton.setEnabled(false); 
     bouton2.setEnabled(true); 
    } 
} 

class Bouton2Listener implements ActionListener { 
    public void actionPerformed(ActionEvent e) { 
     bouton.setEnabled(true); 
     bouton2.setEnabled(false); 
    } 
} 
+0

Подкласс * не может * получить доступ к 'частному' члену суперкласса. – cybersam

+0

нет, это не тот. Я попытался сделать их публичными. – Zerox029

+0

вам лучше разместить код вашего * подкласса * и * суперкласс для нас. –

ответ

1

Вы отметили поля как частные, поэтому их нельзя унаследовать.

Более того, эти «подклассы» не распространяют ваш класс Fenetre. Обращать внимание.

Должен быть:

class BoutonListener extends Fenetre implements ActionListener 

вместо:

class BoutonListener implements ActionListener 

в обеих случаях.

+0

нет, это не тот. Я попытался сделать их публичными. – Zerox029

+0

@ Zerox029 Отредактировал свой ответ. – null

1
//Those are the subclasses 
class BoutonListener implements ActionListener{ 
    public void actionPerformed(ActionEvent arg0) { 
     bouton.setEnabled(false); 
     bouton2.setEnabled(true); 
    } 
} 

Ваши «подклассы» не распространяют никакого суперкласса. Они не являются подклассами Fenetre.