2 Fragen(Java)

JFrame-Gang

Newbie
Registriert
Apr. 2012
Beiträge
3
Hallo zusammen,

ich bin etwas neuer im java programmieren und habe 2 fragen:

1. Ich habe einen Beende-Button und möchte bei klicken des buttons auch eine beendung des fenster(programmes) erzeugen! Wie genau geht das bzw welche methoden benötige ich


2. Ich möchte per klicken eines buttons eine excel.liste aufrufen... aber WIE?


Vielen dank schonmal für eure antworten.

MfG JFrame-Gang
 
Zu 1.: Such mal nach folgenden Stichworten: ActionListener und dispose() bzw. System.exit()
Zu 2.: Zu ungenaue Frage, bitte präziser werden.
 
- actionlistener hab ich drinnen also das passt schonmal. ok danke das hört sich schonmal gut an :)

- stell dir es so vor:
ich habe einen Button namens Abwesenheiten... wenn der User jetz auf diesen Button klick soll eine excel datei aufgemacht werden, in der abwesenheiten von jmd oder etwas drinnsteht.
 
Schon richtig was Killfrog sagt, aber das geht auch präziser ;)
Zu 1:
- dispose schließt nur das Fenster, das Programm läuft dabei aber weiter
- System.exit beendet das Programm, also wird auch das Fenster geschlossen

Zu 2:
- Willst du die Tabelle innerhalb deines Programms darstellen? Hierfür brauchst du eine Library, die das Excel Format versteht und dann müsstest du eigentlich Zugriff auf jede Spalte, Reihe und Zelle haben und alles darstellen könne, wie du magst.
- Oder willst du Excel mit der Tabelle darin öffnen?
- Oder willst du gar Excel mit seiner kompletten Funktionalität in dein Programm einbetten (das wird wohl eher nichts)
 
benneque schrieb:
Wer ist das?

benneque schrieb:
dispose schließt nur das Fenster, das Programm läuft dabei aber weiter. System.exit beendet das Programm, also wird auch das Fenster geschlossen
Korrekt. Da er jedoch nach dem Fenster (und nur in Klammern nach Programm) gefragt hatte, habe ich ihm beide Methoden gegeben. Außerdem wird er wohl kaum mit mehreren Threads arbeiten, solange er noch solche Fragen stehlt, daher wird wohl ein dispose in diesem Fall auch gleich das ganze Programm zum Terminieren bringen.
 
zu 1.: es soll so wie der standardmäßige X-Button rechts oben funktionieren... klar is der sowieso standard aber ich bräuchte halt nen beende button :D

zu 2.
ich meinte es wie mit nem Link.
so wie wenn man zb aufm desktop eine excel, word, pp... etc aufmacht... versteht ihr was ich meine?
 
Killkrog schrieb:
Da hatte ich mich wohl verlesen. Sorry ;)


Mit den Threads wirst du wohl recht haben, trotzdem würde ich zum beenden des Programms ein System.exit() vorziehen. Ist irgendwie eindeutiger...
 
schau dir mal den shutdown hook an.

Code:
Runtime.getRuntime().addShutdownHook(new Thread() {
    public void run() { 

    }
});
 
JFrame-Gang schrieb:
zu 1.: es soll so wie der standardmäßige X-Button rechts oben funktionieren... klar is der sowieso standard aber ich bräuchte halt nen beende button :D

zu 2.
ich meinte es wie mit nem Link.
so wie wenn man zb aufm desktop eine excel, word, pp... etc aufmacht... versteht ihr was ich meine?


das Interface ActionListener in deiner Klasse implementieren
Code:
public MyClass implements ActionListener

Dann bei dem Button..

Code:
JButton shutdownButton = new JButton("Beenden");
shutdownButton.addActionListener(this);
shutdownButton.setActionCommand("close");

Dann zwingt dich deine IDE auch dazu, dass du die Methoden ausprägst.

Code:
	@Override
	public void actionPerformed(ActionEvent ae) {
		if (ae.getActionCommand().equals("close")) {
                       System.exit(0);
                }
       }



Für den Aufruf von Excel mit einer Datei:
Code:
Desktop.getDesktop().open(new File("c:\\file.xls"));
Ruft das dafür Vorgesehene Programm auf.


Da du ja auch alles in nen JFrame anzeigst, kannste das noch machen, damit dein X oben rechts funktioniert (bin mir gerade nicht sicher, ob es Std. ist ; isses woh, alles andere wäre unlogisch :D )
Code:
JFrame a = new JFrame();
a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Alternativ die Methode überschreiben, falls du vorher noch Datenbanken oder sowas schließen musst( was hier wohl NICHT der Fall ist)


// Codebeispiele musst du natürlich anpassen, sollte es dir aber zeigen, was du zutun hast und wenn du nicht weiter kommst, weißte, wonach du suchen musst.
 
Zuletzt bearbeitet:
Um die Antwort von DasBoeseLebt noch ein wenig anfängerfreundlicher zu gestalten (richtig war sie natürlich!):

Code:
public class ExcelOpener {

	public ExcelOpener() {

		// JFrame und Buttons erzeugen
		JFrame frame = new JFrame("ExcelOpener");
		final JButton btnOpen = new JButton("Öffne Excel-Dokument");
		final JButton btnExit = new JButton("Beenden");

		// ActionListener erzeugen und den beiden Buttons zuweisen
		ActionListener actionListener = new ActionListener() {

			public void actionPerformed(ActionEvent event) {
				final Object src = event.getSource();
				if (src == btnOpen) {
					try {
						Desktop.getDesktop().open(new File("c:/example.xlsx"));
					} catch (IOException exp) {
						exp.printStackTrace();
					}
				} else if (src == btnExit) {
					System.exit(0);
				}
			}
		};
		btnOpen.addActionListener(actionListener);
		btnExit.addActionListener(actionListener);

		// Buttons in das JFrame packen
		frame.setLayout(new GridBagLayout());
		GridBagConstraints gbc = new GridBagConstraints();
		frame.add(btnOpen, gbc);
		gbc.gridy = 1;
		gbc.insets = new Insets(5, 0, 0, 0);
		frame.add(btnExit, gbc);

		// Noch einen Rand hinzufügen, damit es ein wenig ordentlicher aussieht
		((JPanel) frame.getContentPane()).setBorder(new EmptyBorder(5, 5, 5, 5));

		// Packen und anzeigen lassen!
		frame.pack();
		frame.setVisible(true);
	}

	public static void main(String[] args) {
		new ExcelOpener();
	}
}
 
Zurück
Oben