Hallo zusammen!
Ich bin gerade dabei, eine Anwendung zu schreiben. Da dies meine erste größere Java-Applikation ist, habe ich eine Frage zur Organisation der Quellcode-Dateien. Bisher habe ich eine Fenster mit einer Menüzeile und zwei kleinen Menüs. Ich habe auch schon ein paar Menüeinträge erzeugt und diese mit kleinen Funktionen belegt. Aber ist es nicht sinnvoller, gewisse Funktionen auszulagern? Bisher geschieht alles in einer Klasse Main. Wie ist es denn sinnvoll, das Projekt in einzelne Klassen zu organisieren? Könnt ihr mir da Tipps geben?
Hier erst einmal der bisherige Quellcode.
Hier registrie ich ja für jeden Menüeintrag einen eigenen ActionListener. Und kann ich die Menüs nicht besser in eigene Klassen auslagern, damit alles übersichtlicher wird und Änderungen leichter zu tätigen sind?
Gruß
Padde
PS: Wieso bekomme ich im JOption-Dialog eigentlich kein Bild angezeigt, obwohl es an genau dieser Position im Dateisystem zu finden ist?
Ich bin gerade dabei, eine Anwendung zu schreiben. Da dies meine erste größere Java-Applikation ist, habe ich eine Frage zur Organisation der Quellcode-Dateien. Bisher habe ich eine Fenster mit einer Menüzeile und zwei kleinen Menüs. Ich habe auch schon ein paar Menüeinträge erzeugt und diese mit kleinen Funktionen belegt. Aber ist es nicht sinnvoller, gewisse Funktionen auszulagern? Bisher geschieht alles in einer Klasse Main. Wie ist es denn sinnvoll, das Projekt in einzelne Klassen zu organisieren? Könnt ihr mir da Tipps geben?
Hier erst einmal der bisherige Quellcode.
Code:
/**
* Main.java
*/
package jile.gui;
import java.awt.Dimension;
import java.awt.Event;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.print.PrinterJob;
import javax.swing.ImageIcon;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.KeyStroke;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
/**
* Die Hauptklasse der Anwendung.
*
* @author PHA
* @version 0.0.1
*/
public class Main extends JFrame {
public static final long serialVersionUID = System.currentTimeMillis();
private JFrame frame;
private JMenuBar menubar = new JMenuBar();
private JMenuItem item;
public Main() {
frame = new JFrame("Jile");
menubar.add(createFileMenu());
menubar.add(createHelpMenu());
frame.setJMenuBar(menubar);
// Schließmechanismus einbauen
frame.addWindowListener(new WindowClosingAdapter(true));
// Dimension des Fensters festlegen
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
int width = screen.width; int height = screen.height;
frame.setSize(width, height);
frame.setVisible(true);
}
private JMenu createFileMenu() {
JMenu file = new JMenu("File");
file.setMnemonic('F');
item = new JMenuItem("New", 'N');
setCTRLAccelerator(item, 'N');
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
new AboutDialog();
}
});
file.add(item);
file.addSeparator();
item = new JMenuItem("Open", 'O');
setCTRLAccelerator(item, 'O');
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(frame);
}
});
file.add(item);
file.addSeparator();
item = new JMenuItem("Print", 'P');
setCTRLAccelerator(item, 'P');
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
PrinterJob job = PrinterJob.getPrinterJob();
if (job.printDialog()) {
try {
job.print();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
});
file.add(item);
file.addSeparator();
item = new JMenuItem("Quit", 'Q');
setCTRLAccelerator(item, 'Q');
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.exit(0);
}
});
file.add(item);
return file;
}
private JMenu createHelpMenu() {
JMenu help = new JMenu("Help");
help.setMnemonic('H');
item = new JMenuItem("About Jile", 'A');
setCTRLAccelerator(item, 'A');
item.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
String msg = "Jile\n";
ImageIcon imageIcon = new ImageIcon("U:\\swmslogo.bmp");
JOptionPane.showMessageDialog(frame, msg, "About Jile", JOptionPane.INFORMATION_MESSAGE, imageIcon);
}
});
help.add(item);
return help;
}
private void setCTRLAccelerator(JMenuItem item, char accelerator) {
KeyStroke keyStroke = KeyStroke.getKeyStroke(accelerator, Event.CTRL_MASK);
item.setAccelerator(keyStroke);
}
/**
* Die <code>main</code>-Methode zum Starten der Anwendung.
*
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
new Main();
}
}
Hier registrie ich ja für jeden Menüeintrag einen eigenen ActionListener. Und kann ich die Menüs nicht besser in eigene Klassen auslagern, damit alles übersichtlicher wird und Änderungen leichter zu tätigen sind?
Gruß
Padde
PS: Wieso bekomme ich im JOption-Dialog eigentlich kein Bild angezeigt, obwohl es an genau dieser Position im Dateisystem zu finden ist?