Gui van java application maken

Status
Niet open voor verdere reacties.

Clemens Schalkw

Gebruiker
Lid geworden
5 dec 2007
Berichten
166
Ik probeer een "flexibele" opzet te maken voor de applicatie GUI.
Wat ik hiermee wil bereiken is dat ik 1 class heb waarin het "framework" staat voor een applicatie.
Ik denk dat zelf aan:

- een JPanel voor het menu (BorderLayout.NORTH);
- een JPanel voor het copyright gedeelte (BorderLayout.SOUTH);
- een JPanel waarin alle applicatie "pagina's" geladen kunnen worden na het klikken op het betreffende menu-item (BorderLayout.CENTER ?????).

Voor de flexibiliteit heb ik ook nog twee methods om EAST en WEST te kunnen overriden.

Nu heb ik een JTabbedPane gekozen als menu.
Ik heb alleen bij het added aan de JTabbedPane de methods voor het creeren van de pagina's toegevoegd als component, maar weet niet of dit nu klopt.
Het lijkt erop dat de betreffende pagina nu ook wordt toegevoegd aan het JPanel voor het menu.

Hoe kan ik dit oplossen en hoe kan ik er dan voor zorgen dat het programma begrijpt dat ik een bepaalde pagina wil zien als ik op dat menu item klik ?

Alvast bedankt voor de hulp.

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

/**
 *
 * @author Clemens Schalkwijk
 */

public class MainFrame {

    // The mainFrame will be the applications frame
    private JFrame mainFrame;

    // The topPanel will contain one or more menuPanels
    private JPanel topPanel;

    // The menuPanel will be the main menu
    private JPanel menuPanel;

    // The mainPanel will be the panel to add the different "pages"
    private JPanel centerPanel;

    private JPanel westPanel;
    private JPanel eastPanel;
    private JPanel southPanel;

    // The tabbedPane will be the main menu op te application
    private JTabbedPane tabbedPane;

    // This is the non-argument constructor
    public MainFrame() {
        makeMainFrame();
    }

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

    /**
     *
     */
    private final void makeMainFrame() {
        mainFrame = new JFrame(StaticValues.APPLICATION_NAME);
        mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        mainFrame.setLayout(new BorderLayout());
        mainFrame.setPreferredSize(new Dimension(StaticValues.PREFERRED_PRODUCT_WIDTH, StaticValues.PREFERRED_PRODUCT_HEIGHT));
        mainFrame.setLocation(new Point(250, 150));

        mainFrame.add(makeTopPanel(), BorderLayout.NORTH);
        mainFrame.add(makeCenterPanel(), BorderLayout.CENTER);
        mainFrame.add(makeSouthPanel(), BorderLayout.SOUTH);

        mainFrame.add(makeWestPanel(), BorderLayout.WEST);
        mainFrame.add(makeEastPanel(), BorderLayout.EAST);

        mainFrame.pack();
        mainFrame.setVisible(Boolean.TRUE);
    }

    private final JComponent makeTopPanel() {
        topPanel = new JPanel(new FlowLayout());
        topPanel.add(makeMenuPanel(), FlowLayout.LEFT);

        return topPanel;
    }

    private JComponent makeMenuPanel() {
        menuPanel = new JPanel();

		tabbedPane = new JTabbedPane();
		tabbedPane.addTab( "Homepage", createHomePage() );
		tabbedPane.addTab( "Corporates", createCorporatePage() );
		tabbedPane.addTab( "Persons", createPersonPage() );
        tabbedPane.addTab( "Contact", createContactPage() );
		menuPanel.add(tabbedPane);

        return menuPanel;
    }

        private JComponent makeCenterPanel() {
        
            centerPanel = new JPanel();
            
            return centerPanel;
    }

        private JComponent makeWestPanel() {
            westPanel = new JPanel();
            westPanel.setPreferredSize(new Dimension(10, StaticValues.PREFERRED_PRODUCT_HEIGHT));
            westPanel.setBackground(Color.BLACK);

            return westPanel;
        }

        private JComponent makeEastPanel() {
            eastPanel = new JPanel();
            eastPanel.setPreferredSize(new Dimension(10, StaticValues.PREFERRED_PRODUCT_HEIGHT));
            eastPanel.setBackground(Color.BLACK);

            return eastPanel;
        }

        private JComponent makeSouthPanel() {
            southPanel = new JPanel(new BorderLayout());

            JLabel lbl_copyright = new JLabel("copyright - " + StaticValues.PRODUCT_DEVELOPER);

            southPanel.add(lbl_copyright, BorderLayout.CENTER);

            return southPanel;
        }

    public JComponent createHomePage() {
        JPanel pnl_homepage = new JPanel(new GridBagLayout());

        JLabel lbl_imageFrame = new JLabel();
        GridBagConstraints cstr_imageFrame = new GridBagConstraints();
        cstr_imageFrame.gridx = 0;
        cstr_imageFrame.gridy = 0;
        cstr_imageFrame.fill = GridBagConstraints.HORIZONTAL;

        JLabel lbl_company = new JLabel(StaticValues.PRODUCT_DEVELOPER);
        GridBagConstraints cstr_company = new GridBagConstraints();
        cstr_company.gridx = 1;
        cstr_company.gridy = 0;
        cstr_company.fill = GridBagConstraints.HORIZONTAL;

        ImageIcon logo = new ImageIcon(StaticValues.LOGO);
        lbl_imageFrame.setPreferredSize(new Dimension(200, 200));
        logo.setDescription("This is the company logo");

        lbl_imageFrame.setIcon(logo);
        pnl_homepage.add(lbl_imageFrame, cstr_imageFrame);
        pnl_homepage.add(lbl_company, cstr_company);

        return pnl_homepage;
    }

    public JComponent createCorporatePage() {

        JPanel pnl_corporatePage = new JPanel(new GridBagLayout());
        pnl_corporatePage.setBackground(Color.BLUE);

        return pnl_corporatePage;
    }

    public JComponent createPersonPage() {

        JPanel pnl_personPage = new JPanel(new GridBagLayout());
        pnl_personPage.setBackground(Color.BLACK);

        return pnl_personPage;
    }

    public JComponent createContactPage() {

        JPanel pnl_contactPage = new JPanel(new GridBagLayout());
        pnl_contactPage.setBackground(Color.GREEN);

        return pnl_contactPage;
    }
}
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan