Hallo zusammen,
ich versuche gerade in die GUI Programmierung von Java einzusteigen.
Als IDE nutze ich Eclipse mit dem Addon WindowBuilder.
Ich würde gerne ein kleines Programm erstellen, bei dem ich über verschiedene Menüeinträge ein jeweils ändernden Fensterhinhalt darstellen möchte.
Diesbezüglich habe ich mich schon ein wenig informiert und bin auf die Erkenntnis gestoßen, dass man in aller Regel immer nur eine Frame Instanz nutzt und stattdessen JPanels für die jeweiligen Inhalte nutzt.
Ich habe mir nun ein Beispielprojekt für den wechselnden Fensterinhalt erstellt. Ein Frame mit dem Namen FrameManager.java und zwei JPanels mit MainWindow.java und Preferences.java.
Im FrameManager habe ich ein Menü eingebaut. Hier sollen zwei Menüitems auf die MainWindow bzw auf die Preferences umschalten können.
FrameManager.java:
MainWindow.java
Wie stelle ich das nun am Geschicktesten an?
ich versuche gerade in die GUI Programmierung von Java einzusteigen.
Als IDE nutze ich Eclipse mit dem Addon WindowBuilder.
Ich würde gerne ein kleines Programm erstellen, bei dem ich über verschiedene Menüeinträge ein jeweils ändernden Fensterhinhalt darstellen möchte.
Diesbezüglich habe ich mich schon ein wenig informiert und bin auf die Erkenntnis gestoßen, dass man in aller Regel immer nur eine Frame Instanz nutzt und stattdessen JPanels für die jeweiligen Inhalte nutzt.
Ich habe mir nun ein Beispielprojekt für den wechselnden Fensterinhalt erstellt. Ein Frame mit dem Namen FrameManager.java und zwei JPanels mit MainWindow.java und Preferences.java.
Im FrameManager habe ich ein Menü eingebaut. Hier sollen zwei Menüitems auf die MainWindow bzw auf die Preferences umschalten können.
FrameManager.java:
Java:
package gui;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import java.awt.event.ActionListener;
import java.io.File;
import java.awt.event.ActionEvent;
import javax.swing.JSeparator;
public class FrameManager extends JFrame {
private JPanel contentPane;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
FrameManager frame = new FrameManager();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public FrameManager() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
JMenu mnFiles = new JMenu("Files");
menuBar.add(mnFiles);
JMenuItem mntmNew = new JMenuItem("New");
mnFiles.add(mntmNew);
JMenuItem mntmOpen = new JMenuItem("Open");
mntmOpen.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// Verzeichnis öffnen
// JFileChooser-Objekt erstellen
JFileChooser chooser = new JFileChooser();
// Dialog zum Oeffnen von Dateien anzeigen
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
int returnVal = chooser.showOpenDialog(null);
File f;
if (returnVal == JFileChooser.APPROVE_OPTION)
{
f = chooser.getSelectedFile();
//System.out.println(f.getPath());
}
}
});
mnFiles.add(mntmOpen);
JMenuItem mntmExit = new JMenuItem("Exit");
mntmExit.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
System.exit(0);
}
});
JSeparator separator = new JSeparator();
mnFiles.add(separator);
mnFiles.add(mntmExit);
JMenu mnOptions = new JMenu("Options");
menuBar.add(mnOptions);
JMenuItem mntmPreferences = new JMenuItem("Preferences");
mntmPreferences.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Preferences pref = new Preferences();
pref.Preferences();
}
});
mnOptions.add(mntmPreferences);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
JPanel panel = new JPanel();
contentPane.add(panel, BorderLayout.CENTER);
}
}
MainWindow.java
Java:
package gui;
import javax.swing.JPanel;
import javax.swing.JLabel;
public class MainWindow extends JPanel {
/**
* Create the panel.
*/
public MainWindow() {
setLayout(null);
JLabel lblMain = new JLabel("Main");
lblMain.setBounds(10, 11, 46, 14);
add(lblMain);
}
}
Wie stelle ich das nun am Geschicktesten an?