Method wordt niet overschreven

Status
Niet open voor verdere reacties.

Clemens Schalkw

Gebruiker
Lid geworden
5 dec 2007
Berichten
166
Ik heb een class gemaakt die mijn default window moet zijn.
Voor de andere windows moet het centrale panel overriden worden, maar dit lijkt niet te gebeuren. Kan iemand mij uitleggen waarom dit niet gebeurt en hoe ik dit eventueel zou kunnen oplossen ?
Alvast bedankt.

Hieronder mijn "main"window class:

Code:
import java.awt.*;
import javax.swing.*;


public class MainFrame {


    private JFrame form;

    protected JPanel pnlCenter;
    private JPanel pnlNorth;
    protected JPanel pnlEast;
    private JPanel pnlSouth;
    protected JPanel pnlWest;

    public MainFrame() {
        makeMainFrame();
    }

    public static void main(String[] args) {
        MainFrame m = new MainFrame();
    }

    private void makeMainFrame() {
        form = new JFrame("*****");
        form.setLayout(new BorderLayout());
        form.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        makeTopPanel();
        makeRightPanel();
        makeBottomPanel();
        makeLeftPanel();
        makeCenterPanel();

        form.add(pnlNorth, BorderLayout.NORTH);
        form.add(pnlEast, BorderLayout.EAST);
        form.add(pnlSouth, BorderLayout.SOUTH);
        form.add(pnlWest, BorderLayout.WEST);
        form.add(pnlCenter, BorderLayout.CENTER);

        form.pack();
        form.setVisible(true);
    }

    private void makeTopPanel() {
        pnlNorth = new JPanel(new FlowLayout());
        
        JMenuBar topMenu = new JMenuBar();

        JMenu klanten = new JMenu("Klanten");
        JMenuItem klantenOverzicht = new JMenuItem("Overzicht");
        JMenuItem klantenNieuw = new JMenuItem("New");
        klanten.add(klantenOverzicht);
        klanten.add(klantenNieuw);

        JMenu portiers = new JMenu("Portiers");
        JMenuItem portiersOverzicht = new JMenuItem("Overzicht");
        JMenuItem portierNieuw = new JMenuItem("New");
        portiers.add(portiersOverzicht);
        portiers.add(portierNieuw);

        JMenu events = new JMenu("Evenementen");
        JMenuItem eventsOverzicht = new JMenuItem("Overzicht");
        JMenuItem eventsNieuw = new JMenuItem("New");
        portiers.add(eventsOverzicht);
        portiers.add(eventsNieuw);

        topMenu.add(klanten);
        topMenu.add(portiers);
        topMenu.add(events);

        form.setJMenuBar(topMenu);
    }

    /**
     * TODO : Javadoc
     */
    public void makeRightPanel() {
        pnlEast = new JPanel(new FlowLayout());        
    }

    /**
     * TODO : Javadoc
     */
    public void makeBottomPanel() {
        pnlSouth = new JPanel(new FlowLayout());

        JLabel copyright = new JLabel("© Copyright - *****");
        pnlSouth.add(copyright);
    }

    /**
     * TODO : Javadoc
     */
    public void makeLeftPanel() {
        pnlWest = new JPanel(new FlowLayout());
    }

    /**
     * This panel is the core of the application.
     * Every new window should override the centerpanel.
     */
    public void makeCenterPanel() {
        pnlCenter = new JPanel(new FlowLayout());
        
    }
}

Hieronder de class die de bovenstaande extend:

Code:
import java.awt.*;
import javax.swing.*;

public class Homepage extends MainFrame {

    @Override
    public void makeCenterPanel() {
        pnlCenter = new JPanel(new GridBagLayout());
        GridBagConstraints constr = new GridBagConstraints();

        JButton logoPanel = new JButton("hallo");
        logoPanel.setSize(200, 200);
        logoPanel.setBackground(Color.BLUE);
        constr.gridx = 1;
        constr.gridy = 2;
        pnlCenter.add(logoPanel, constr);
    }
}
 
:s.

Gevonden.
Ik vergat in mijn main-method aan te geven dat hij een ander window moet testen.

MainFrame m = new MainFrame() moet ik veranderen in Homepage m = new Homepage();
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan