Projekt Olympische Spiele

J

julia9119

Gast
Hi,
ich habe ein kleines großes Problem ;) wir müssen in der Uni ein angeblich kleines Javaprojekt durchführen. Da ich aber noch keine Ahnung habe wie das geht, und das wohl auch nie mein Fachgebiet wird, hoffe ich auf eure Hilfe!
Es geht um ein Programm mit dem man "Olympische Spiele" anschauen, bearbeiten, erstellen und löschen kann. In meiner Gruppe bin ich zuständig für die grafische Oberfläche. Ich bin auch schon soweit, dass das "Startfenster" so aussieht wie es soll, dass der "Neu" Button funktioniert und der "Löschen" Button. ("Bearbeiten" sollen wir nicht implementieren... Leider komme ich im Moment einfach nicht weiter, obwohl ich doch nur die beiden Fenster, die sich öffnen wenn man auf "Neu" bzw "Löschen" klickt, mit den "Abbrechen" bzw "Zurück" Buttons schließen will...
hier einfach mal die Aufgabenstellung und mein bisheriges Coding...
(Es ist nicht gerade wenig aber es wäre echt toll wenn mir jemand helfen würde!)

Aufgabe:
Graphische Oberfläche
Das Programm zeigt standardmäßig eine nicht editierbare Tabelle mit folgenden Informationen zu den
erfassten Olympischen Spielen an (Beispiel)
Olympiade Ort Jahr So/Wi
XX München 1972 So
XI Sapporo 1972 Wi
XX Turin 2006 Wi
Die Reihenfolge entspricht der Standardsortierung (compareTo() von Spiel). Es soll möglich sein,
alternativ die folgende Sortierreihenfolge zu aktivieren (z.B. via Button):
• Sommer- vor Winterspiele, Jahr absteigend, Ort aufsteigend
Die jeweils aktive Sortierreihenfolge kann auch umgekehrt werden (z.B. via Button).
Das Programm unterstützt die folgenden Aktivitäten
• Neu
Erfassen von Spielen in einem eigenen modalen Formular. Bei erfolgreichem Erfassen wird
der Datensatz in die Übersichtstabelle (an korrekter Stelle) aufgenommen.
(Auswahl von Ort via List- oder Combo-Box)
• Anzeigen
Doppelklick auf einen Tabelleneintrag zeigt in einem (nicht editierbaren) modalen Formular
alle Details. Hier kann das gleiche Formular wie bei der Aktivität "Neu" verwendet werden.
• Bearbeiten
(Diese Implementierung wird für die aktuelle Projektarbeit nicht gefordert.)
• Löschen
Ein markierter Datensatz kann gelöscht werden (Bestätigungsdialog).

Mein bisheriges Coding:

[Java] import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class grafischeOberfläche extends JFrame implements ActionListener{

public grafischeOberfläche(){

Container c = getContentPane();
JPanel p1;

JButton b1 = new JButton("Neu");
JButton b2 = new JButton("Bearbeiten");
JButton b3 = new JButton("Löschen");
p1 = new JPanel( new FlowLayout() );
p1.add(b1);
p1.add( b2 );
p1.add( b3);

c.add( p1, BorderLayout.SOUTH );

ActionListener lis = new NeuAnlegen();
b1.addActionListener( lis );

ActionListener lis2 = new löschen();
b3.addActionListener( lis2 );

Container d = getContentPane(); //Tabelle !!!!!!!!!!!!!
String[] columnNames = { "Stadt", "Land", "Einwohnerzahl" };

String[][] rowData = { { "Zürich", "CH ", "371000" },
{ "Bern", "CH ", "128000" }, { "Werdenberg", "CH ", "90" },
{ "Berlin", "DE ", "3400000" }};
JTable tab = new JTable( rowData, columnNames );

d.add( new JScrollPane( tab ) );

}

public static void main( String[] args ) {
grafischeOberfläche fenster = new grafischeOberfläche();
fenster.setTitle("Die Olympischen Spiele");
fenster.setSize( 600,400);
fenster.setLocation(200, 200);
fenster.setVisible( true );
fenster.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );


}
} [/Java]

[Java]
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.*;
//import com.toedter.calendar.JDateChooser;


public class NeuAnlegen extends JFrame implements ActionListener{

public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Neu")) {

NeuAnlegen fenster2 = new NeuAnlegen();
fenster2.setTitle("neue Olympiade anlegen");
fenster2.setSize( 400, 200 );
fenster2.setLocation(200, 150);
fenster2.setVisible( true );;
}
}
public NeuAnlegen(){
Container c = getContentPane();

JPanel p1, p2;

JButton b1 = new JButton("Erfassen");
JButton b2 = new JButton("Abbrechen");
p1 = new JPanel( new FlowLayout() );
p1.add(b1);
p1.add( b2 );
c.add( p1, BorderLayout.SOUTH );

// ActionListener lis = new Schliessen();//??????
// b2.addActionListener( lis );

p2 = new JPanel( new GridLayout(7,2) );
p2.add(new JLabel("Austragungsort: ")); p2.add(new JTextField());
p2.add(new JLabel("Austragungsjahr: ")); p2.add(new JTextField());
p2.add(new JLabel("Sommer- oder Winterspiel: ")); p2.add(new JTextField());

// p2.add(new JDateChooser());
// datum.setDate(new Date());
// xyz.add(datum);

p2.add(new JLabel("Olympiade: ")); p2.add(new JTextField());
p2.add(new JLabel("Datum Eröffnungsfeier: ")); p2.add(new JTextField());
p2.add(new JLabel("Datum Abschlussfeier: ")); p2.add(new JTextField());
p2.add(new JLabel("Schrimherr: ")); p2.add(new JTextField());
c.add(p2);

}

} [/Java]

[Java] import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

import java.awt.*;



public class vorhanden extends JFrame implements ActionListener{

public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Neu")) {

vorhanden fenster2 = new vorhanden();
fenster2.setTitle("Achtung!");
fenster2.setSize( 300, 200 );
fenster2.setLocation(200, 150);
fenster2.setVisible( true );;
}
}
public vorhanden(){
Container c = getContentPane();

JPanel p1, p2;

JButton b1 = new JButton("OK");
JButton b2 = new JButton("Zurück");
p1 = new JPanel( new FlowLayout() );
p1.add(b1);
p1.add( b2 );
c.add( p1, BorderLayout.SOUTH );

p2 = new JPanel( new GridLayout() );
p2.add(new JLabel("Olympisches Spiel bereits vorhanden. ", JLabel.CENTER));
c.add(p2);

}

} [/Java]

[Java]
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.*;


public class löschen extends JFrame implements ActionListener{

public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Löschen")) {

löschen fenster2 = new löschen();
fenster2.setTitle("Achtung!");
fenster2.setSize( 300, 150 );
fenster2.setLocation(100, 100);
fenster2.setVisible( true );
}
}
public löschen(){
Container c = getContentPane();

JPanel p1, p2;

JButton b1 = new JButton("Ja");
JButton b2 = new JButton("Nein");
p1 = new JPanel( new FlowLayout() );
p1.add(b1);
p1.add( b2 );
c.add( p1, BorderLayout.SOUTH );

// ActionListener lis = new Schliessen();//?????
// b1.addActionListener( lis );
//
// ActionListener lis2 = new Schliessen();
// b2.addActionListener( lis2 );

p2 = new JPanel( new GridLayout() );
p2.add(new JLabel("Wollen Sie diesen Datensatz wirklich löschen? ", JLabel.CENTER));
c.add(p2);

}

// public void actionPerformed1(ActionEvent f) {
// if (f.getActionCommand().equals("Nein")) {
// Schliessen();

// }
// }
} [/Java]

[Java]
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

import java.awt.*;



public class Übersicht extends JFrame implements ActionListener{

public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Neu")) { //!!!!!!!!!!!!!!!

Übersicht fenster2 = new Übersicht();
fenster2.setTitle("Übersicht");
fenster2.setSize( 600, 400 );
fenster2.setLocation(200, 150);
fenster2.setVisible( true );;
}
}
public Übersicht(){
Container c = getContentPane();

JPanel p1;

JButton b1 = new JButton("Zurück");
p1 = new JPanel( new FlowLayout() );
p1.add(b1);
c.add( p1, BorderLayout.SOUTH );


}
Container d = getContentPane(); //Tabelle !!!!!!!!!!!!!
String[] columnNames = { "Stadt", "Land", "Einwohnerzahl" };

String[][] rowData = { { "Zürich", "CH ", "371000" },
{ "Bern", "CH ", "128000" }, { "Werdenberg", "CH ", "90" },
{ "Berlin", "DE ", "3400000" }};
JTable tab = new JTable( rowData, columnNames );


} [/Java]

[Java]
//
//import java.awt.event.ActionEvent;
//import java.awt.event.ActionListener;
//import javax.swing.*;
//
// public abstract class Schliessen extends JFrame implements ActionListener{
//
// public Schliessen(){
// setVisible(false);
//
// }
//
//
// } [/Java]

soo, das wars..wie gesagt nicht gerade wenig aber ich bin echt hilflos und weiß nicht weiter :(
danke schonmal an alle!
Gruß, Julia
 
Zuletzt bearbeitet von einem Moderator:

Spin

Top Contributor
Hallo Julia.

Damit du ein Fenster schließen kannst, brauchst du nur component.setVisible(false).
Bzw. kannst du Componenten auch mit component.removeAll() entfernen.
dispose() geht auch und räumt alle Komponenten auf.

Welche Bereiche funktionieren nicht?

Kannst du bitte genu den Part posten der deiner Meinung nach nicht geht?

PS: Klassennamen groß schreiben , Methoden klein schreiben ;)
Du baust auch immer neue Objekte bei Events. Bitte ändern.

Solltest du grundlegende Probleme haben, stelle ich auch gerne Code zu Verfügung den du testen kannst, aber vielleicht helfen die Methoden die ich oben geschrieben habe.

grüße Spin
 
J

julia9119

Gast
danke für die schnelle Antwort!
Code zum testen wäre klasse! da vertsehe ich es immer noch am schnellsten...
und was genau nicht geht weiß ich nicht :( im moment ist eben dass Problem dass ich nicht weiß, wo ich nun die Methoden hinschreiben muss damit ich mit den Buttons die Fenster schliessen kann...dass ich immer neue Objekte baue bei den Events weiß ich aber ich weiß nicht wie das anders geht :(
wie du merkst - ich hab keine Ahnung ;D
Gruß, Julia
 

muckelzwerg

Bekanntes Mitglied
Wenn Du keine Ahnung hast, dann verschaff Dir welche. Ihr müsst an der Uni "angeblich" so ein Projekt machen?
Was meinst Du denn damit?
Welche Anleitungen und Tutorials hast Du Dir den bisher angesehen? Welche Bücher hast benutzt? Was hast Du bisher in Java gemacht?
Da haben viele Menschen schon sehr viel Zeit investiert, um gute Anleitungen zu bauen. Sowas hilft, das benutzen wir auch dauernd.

Das ist nicht unfreundlich gemeint. Aber überleg mal, was es über gelernte Programmierer aussagen würde, wenn man trotz "ich hab keine Ahnung" solche Projekte schafft. Da kann deren Job ja nicht viel wert sein ... ;)
 

Spin

Top Contributor
Hier : Habe mal 5 Minuten Zeit genommen um dir den HaupFrame zu schreiben :

Java:
package javaforumhelp;

import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

/**
 * Class GUI - Graphische Oberfläche
 *
 * @javaforumhelp
 */

public class GUI extends JFrame implements ActionListener{

	// global defaults to use them in the whole GUI class
	private JPanel p1 = null;
	private JButton b1 = null;
	private JButton b2 = null;
	private JButton b3 = null;
	
	// defaults
	
	private String[] columnNames = { "Stadt", "Land", "Einwohnerzahl" };

	private String[][] rowData = { { "Zürich", "CH ", "371000" },
	{ "Bern", "CH ", "128000" }, { "Werdenberg", "CH ", "90" },
	{ "Berlin", "DE ", "3400000" }};
	
	
	public GUI() {
		
		this.setTitle("Die Olympischen Spiele");
		this.setSize( 600,400);
		this.setLocation(200, 200);
		this.setVisible( true );
		this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		
		// get content to add components to frame
		Container contentPane = this.getContentPane();
		
		// flowlayout is default
		this.p1 = new JPanel();
		
		this.b1 = new JButton("Neu");
		b1.addActionListener(new NewListener(this));
		
		this.b2 = new JButton("Bearbeiten");
		this.b3 = new JButton("Löschen");
		b3.addActionListener( new DeleteListener(this) );
		
		// add to panel
		p1.add(b1);
		p1.add(b2);
		p1.add(b3);
		
		contentPane.add( p1, BorderLayout.SOUTH );
		JTable tab = new JTable( rowData, columnNames );

		contentPane.add( new JScrollPane( tab ) );    
	}
	
	public static void main(String[] args){
		new GUI();
	}
	
}

Prinzipiell hast du schon die richtigen Methoden, die alles ermöglichen , nur das hin und her schubsen von Variablen gelingt dir nicht. Schau dir bitte an was, globale und lokale Variablen sind, das hilft ;)

Ich habe alles private gestzt - jetzt kannst du getter und setter bauen.

Beispielsweise habe ich im Listener this übergeben. Dann kannst du jetzt in deinen Event Klassen, das Objekt GUI nehmen und eventuell Buttons hinzufügen usw. halt auf events in der klasse gui reagieren.

grüße - versuche dich mal , benutze mein Methoden die ich vorgeschlagen habe .)
 
J

julia9119

Gast
oh toll! Vielen vielen Dank!
Das werd ich mir gleich mal anschauen...dann versteh ich das Prinzip vll auch mal ;) ich find nämlich dass der Anfang iwie immer das schwerste ist und wenn ich dann die Methoden mal hab usw gehts eig :)
also danke nochmal und wenn was nicht klappt meld ich mich nochmal!
Grüße, Julia
 
J

julia9119

Gast
so, hab eben angefangen und hab aber schon wieder ein kleines Problem...

[Java]
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Olympiade extends JFrame implements ActionListener{

private JPanel p1 = null;
private JButton b1 = null;
private JButton b2 = null;
private JButton b3 = null;


private String[] columnNames = { "Stadt", "Land", "Einwohnerzahl" };

private String[][] rowData = { { "Zürich", "CH ", "371000" },
{ "Bern", "CH ", "128000" }, { "Werdenberg", "CH ", "90" },
{ "Berlin", "DE ", "3400000" }};

public Olympiade(){

this.setTitle("Die Olympischen Spiele");
this.setSize( 600,400);
this.setLocation(200, 200);
this.setVisible( true );
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

Container c = this.getContentPane();
this.p1 = new JPanel( new FlowLayout() );

this.b1 = new JButton("Neu");
// ActionListener lis = new MyButtonListener();
b1.addActionListener( this );

this.b2 = new JButton("Bearbeiten");
this.b3 = new JButton("Löschen");
// b3.addActionListener( new DeleteListener(this) );

p1.add(b1);
p1.add( b2 );
p1.add( b3);

c.add( p1, BorderLayout.SOUTH );
JTable tab = new JTable( rowData, columnNames );

c.add( new JScrollPane( tab ) );

}

public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("Neu")) {

JFrame fenster1 = new JFrame("neue Olympiade anlegen");
fenster1.setSize( 400, 200 );
fenster1.setLocation(200, 150);
fenster1.setVisible( true );;

}
}

public static void main(String[] args){
new Olympiade();
}
}
[/Java]

so, wenn ich also auf den Button "Neu" klicke öffnet sich das neue Fenster, hat die angegebene Größe und den angegebenen Titel. Wsl dumme Frage aber wie "fülle" ich das Fenster jetzt am besten mit Buttons Tabellen usw...?
Danke, Julia
 

Spin

Top Contributor
Du hast uns keinen fehlerhaften Code geschickt, sondern das für dein hauptfenster.

Teige doch mal bitte deine Klasse MyButtonListener?????????

Bzw. erstelle diese !!!


lass doch addActionListener(this);


Dann vergleiche : source == button und rufen dann new Frame_2 auf oder so.
Das ist eine Klasse die von JFrame erbt und in der kannst du wieder Komponenten adden.

Setz dich doch bitte mal mit Java auseinandern. Wie man kleine Sachen realisiert. Ich kann dir zwar alles in 15 Minuten proggen, aber ich weiss nciht ob der Aufwand gerechtfertigt ist :p

grüße spin
 

jgh

Top Contributor
du füllst nicht das Fenster...zumindest dann nicht, wenn du es eigentlich schon gebaut hast!!!

[java=59]

NeuAnlegen neuAnlegen = new NeuAnlegen();
neuAnlegen.setSize(400, 200);
neuAnlegen.setLocation(200, 150);
neuAnlegen.setVisible(true);
[/code]
 
J

julia9119

Gast
so, mein Problem hat sich eh schon erledigt. Bin jetzt soweit dass wir erst mal die Datenbank anhängen und test obs geht...aber danke für die Antworten!

[Java]
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import java.sql.SQLException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Olympiade extends JFrame implements ActionListener{

private JPanel p1 = null;
private JButton b1 = null;
private JButton b2 = null;
private JButton b3 = null;


private String[] columnNames = { "Stadt", "Land", "Einwohnerzahl" };

private String[][] rowData = { { "Zürich", "CH ", "371000" },
{ "Bern", "CH ", "128000" }, { "Werdenberg", "CH ", "90" },
{ "Berlin", "DE ", "3400000" }};

public Olympiade(){

this.setTitle("Die Olympischen Spiele");
this.setSize( 600,400);
this.setLocation(200, 200);
this.setVisible( true );
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

Container c = this.getContentPane();
this.p1 = new JPanel( new FlowLayout() );

this.b1 = new JButton("Neu");
b1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
final JFrame fenster1 = new JFrame("neue Olympiade anlegen");
fenster1.setSize( 400, 200 );
fenster1.setLocation(200, 150);
fenster1.setVisible( true );

Container c = fenster1.getContentPane();
JPanel p1, p2;

JButton b1 = new JButton("Erfassen");
JButton b2 = new JButton("Abbrechen");

b2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
fenster1.setVisible(false);
}
});

p1 = new JPanel( new FlowLayout() );
p1.add(b1);
p1.add( b2 );
c.add( p1, BorderLayout.SOUTH );

p2 = new JPanel( new GridLayout(7,2) );
p2.add(new JLabel("Austragungsort: ")); p2.add(new JTextField());
p2.add(new JLabel("Austragungsjahr: ")); p2.add(new JTextField());
p2.add(new JLabel("Sommer- oder Winterspiel: ")); p2.add(new JTextField());

p2.add(new JLabel("Olympiade: ")); p2.add(new JTextField());
p2.add(new JLabel("Datum Eröffnungsfeier: ")); p2.add(new JTextField());
p2.add(new JLabel("Datum Abschlussfeier: ")); p2.add(new JTextField());
p2.add(new JLabel("Schrimherr: ")); p2.add(new JTextField());
c.add(p2);

}
});
//NEUE METHODE -ENDE- !!!!

this.b2 = new JButton("Bearbeiten");
this.b3 = new JButton("Löschen");
b3.addActionListener( this );

p1.add(b1);
p1.add( b2 );
p1.add( b3); //NEUE METHODE - ANFANG -!!!!
b3.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
JFrame f = new JFrame("Löschen?");
JOptionPane jop = new JOptionPane();
int ok = jop.showConfirmDialog(f,
"Möchten Sie diesen Eintrag entgültig löschen?",
"Gewählten Eintrag löschen", JOptionPane.YES_NO_OPTION);
jop.setVisible(true);
if (ok == JOptionPane.YES_OPTION)
{
//Wenn "OK" geklickt führe xyz aus ... hier kannste z.B. loeschen() einbauen ..
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}
});
//NEUE METHODE -ENDE- !!!!

c.add( p1, BorderLayout.SOUTH );

JTable tab = new JTable( rowData, columnNames );

c.add( new JScrollPane( tab ) );

}



public static void main(String[] args){
new Olympiade();
}
}
[/Java]
 
J

julia9119

Gast
so, jetzt hab ich doch wiedermal ein Problem. Hab mich zwar noch nicht soo lang damit beschäftigt aber da wir das bis morgen abend fertig haben müssen wirds Zeit dass das jetzt endlich mal geht....

[Java]
import javax.swing.*;

import java.awt.*;
import java.awt.event.*;
import java.sql.SQLException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import java.awt.Color;
import java.util.Date;
import net.sf.nachocalendar.components.DateField;
import net.sf.nachocalendar.components.DatePanel;
import net.sf.nachocalendar.CalendarFactory;

public class Olympiade extends JFrame implements ActionListener{

private JPanel p1 = null;
private JButton b1 = null;
private JButton b2 = null;
private JButton b3 = null;


private String[] columnNames = { "Stadt", "Land", "Einwohnerzahl" };

private String[][] rowData = { { "Zürich", "CH ", "371000" },
{ "Bern", "CH ", "128000" }, { "Werdenberg", "CH ", "90" },
{ "Berlin", "DE ", "3400000" }};


public Olympiade(){

this.setTitle("Die Olympischen Spiele");
this.setSize( 600,400);
this.setLocation(200, 200);
this.setVisible( true );
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

Container c = this.getContentPane();
this.p1 = new JPanel( new FlowLayout() );

this.b1 = new JButton("Neu");
b1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
final JFrame fenster1 = new JFrame("neue Olympiade anlegen");
// fenster1.setSize( 400, 200 );
// fenster1.setLocation(200, 150);
// fenster1.setVisible( true );

JDialog dialog = new JDialog(fenster1, "neue Olympiade anlegen", true);
dialog.setModal(true);
dialog.setSize( 400, 200 );
dialog.setLocation(200, 150);
dialog.setVisible( true );

Container d = fenster1.getContentPane();
JPanel p1, p2;

JButton b1 = new JButton("Erfassen");
JButton b2 = new JButton("Abbrechen");
b2.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
fenster1.setVisible(false);
}
});

p1 = new JPanel( new FlowLayout() );
p1.add(b1);
p1.add( b2 );
d.add( p1, BorderLayout.SOUTH );

p2 = new JPanel( new GridLayout(7,2) );
p2.add(new JLabel("Austragungsort: ")); JComboBox ort = new JComboBox(); p2.add(ort);
p2.add(new JLabel("Austragungsjahr: ")); JTextField jahr = new JTextField(); p2.add(jahr);
p2.add(new JLabel("Sommer- oder Winterspiel: ")); JComboBox sowi = new JComboBox(); p2.add(sowi);
p2.add(new JLabel("Olympiade: ")); JTextField olymp = new JTextField(); p2.add(olymp);
p2.add(new JLabel("Datum Eröffnungsfeier: ")); DateField date1 = CalendarFactory.createDateField(); p2.add(date1);
p2.add(new JLabel("Datum Abschlussfeier: ")); DateField date2 = CalendarFactory.createDateField(); p2.add(date2);
p2.add(new JLabel("Schrimherr: ")); JTextField herr = new JTextField(); p2.add(herr);

d.add(p2);
}
});

this.b2 = new JButton("Bearbeiten");
this.b3 = new JButton("Löschen");
b3.addActionListener( this );

p1.add(b1);
p1.add( b2 );
p1.add( b3);
b3.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {
JFrame f = new JFrame("Löschen?");
JDialog dialog = new JDialog(f, "neue Olympiade anlegen", true);
dialog.setModal(true);

JOptionPane jop = new JOptionPane();
int ok = JOptionPane.showConfirmDialog(f,
"Möchten Sie diesen Eintrag entgültig löschen?",
"Gewählten Eintrag löschen", JOptionPane.YES_NO_OPTION);
jop.setVisible(true);
if (ok == JOptionPane.YES_OPTION)
{
//Wenn "OK" geklickt führe xyz aus ... hier kannste z.B. loeschen() einbauen ..
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

}
});

c.add( p1, BorderLayout.SOUTH );

JTable tab = new JTable( rowData, columnNames ){


public boolean isCellEditable(int x, int y) {
return false;
}
};
tab.addMouseListener(new MouseListener(){
public void mouseClicked(MouseEvent e) {
if(e.getClickCount() == 2) {
final JFrame fenster3 = new JFrame();
fenster3.setTitle("Übersicht");
fenster3.setSize( 350, 250 );
fenster3.setLocation(300, 150);
fenster3.setVisible( true );;

Container c = fenster3.getContentPane();
JPanel p1, p2;

JButton b1 = new JButton("Schließen");
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fenster3.setVisible(false);
}
});

p1 = new JPanel( new FlowLayout() );
p1.add(b1);
c.add( p1, BorderLayout.SOUTH );

p2 = new JPanel( new GridLayout(7,2) );
p2.add(new JLabel("Austragungsort: ")); p2.add(new JComboBox());
p2.add(new JLabel("Austragungsjahr: ")); p2.add(new JTextField());
p2.add(new JLabel("Sommer- oder Winterspiel: ")); p2.add(new JTextField());

p2.add(new JLabel("Olympiade: ")); p2.add(new JTextField());
p2.add(new JLabel("Datum Eröffnungsfeier: ")); p2.add(CalendarFactory.createDateField());
p2.add(new JLabel("Datum Abschlussfeier: ")); p2.add(CalendarFactory.createDateField());
p2.add(new JLabel("Schrimherr: ")); p2.add(new JTextField());
c.add(p2);
}
}

@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub

}

@Override
public void mouseReleased(MouseEvent arg0) {

}
});

c.add( new JScrollPane( tab ) );

}

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

@Override
public void actionPerformed(ActionEvent arg0) {
// TODO Auto-generated method stub

}
}
[/Java]

fenster1 als JFrame: passt, ist gefüllt, alles geht nur ist das Fenster nicht modal. soll es aber sein
dann als JDialog: fenster1 ist modal aber die Daten sind nicht mehr vorhanden...
wie bekomme ich beides, modal und daten????
 
C

chronix

Gast
Hi,

1.) JFrames lassen sich (wie du auch schon bemerkt hast) nicht modal machen, nur JDialog

2.) Du machst deinen JDialog sichtbar (setVisible) der Inhalt wird aber erst in der actionPerformed zusammengestellt.
Du könntest zum einen unter Zeile 86 erst
Java:
 fenster1.setVisible( true );
aufrufen oder ein
Java:
 fenster1.repaint();
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
MiMa JUnit5 im JavaFX Projekt AWT, Swing, JavaFX & SWT 2
B Java Projekt mit JavaFX und jfoenix ausführbar machen AWT, Swing, JavaFX & SWT 46
H JavaFX wie JavaFX Projekt aufsetzen? AWT, Swing, JavaFX & SWT 10
G JavaFX Code in neues Projekt übernehmen AWT, Swing, JavaFX & SWT 0
N JavaFX Javafx intelij Projekt zu ausführbaren jar Datei Machen AWT, Swing, JavaFX & SWT 1
Z GUI Forms - Mehrere Fenster in einem Projekt AWT, Swing, JavaFX & SWT 18
L FX-Projekt: fast leere Fensterausgabe ohne Fehlermeldung AWT, Swing, JavaFX & SWT 6
N JavaFX Projekt nachträglich zu JavaFX Application machen? AWT, Swing, JavaFX & SWT 1
ruutaiokwu SWT "Google Window Builder" tut keine jar's ins Projekt rein bei SWT-Projekt AWT, Swing, JavaFX & SWT 22
VPChief Eclipse: Projekt mit src ordner exportieren. AWT, Swing, JavaFX & SWT 76
Zrebna JavaFX-Projekt mit Bildern funktioniert nicht - um Hilfe wird gebeten AWT, Swing, JavaFX & SWT 14
ZH1896ZH MineSweeper Projekt: Testen nicht möglich AWT, Swing, JavaFX & SWT 6
N Ausführbare Datei aus JavaFX Projekt erstellen AWT, Swing, JavaFX & SWT 22
MiMa Java Projekt nach JavaFX convertieren AWT, Swing, JavaFX & SWT 4
M Java Gui Projekt, Würfelspiel AWT, Swing, JavaFX & SWT 2
Sam96 JavaFX mit Sqlite Projekt mit jar zu groß AWT, Swing, JavaFX & SWT 10
A Wie baue ich das Bus-System in ein Java Projekt ein? AWT, Swing, JavaFX & SWT 5
B Pong Projekt mit LWJGL Klassen exportieren AWT, Swing, JavaFX & SWT 14
C Hilfe beim programmieren mit studiumgebundenes Projekt AWT, Swing, JavaFX & SWT 1
J Frage zu Java Projekt [2D Game] AWT, Swing, JavaFX & SWT 3
Tom299 JavaFX Projekt-Struktur AWT, Swing, JavaFX & SWT 2
S Projekt: Meisterschaft - Abspeichern bereits gemachter Schritte AWT, Swing, JavaFX & SWT 2
M JavaFX MSI oder EXE aus JavaFX Projekt erstellen? AWT, Swing, JavaFX & SWT 2
Birke Swing Neue Swing LayoutManager: TOnion Projekt AWT, Swing, JavaFX & SWT 10
R JavaFX Mein SceneBuilder Projekt AWT, Swing, JavaFX & SWT 3
D Ambitioniertes Projekt - Brauche Stichworte AWT, Swing, JavaFX & SWT 4
M GUI-Projekt realisieren AWT, Swing, JavaFX & SWT 9
J Swing Window-Builder-Projekt richtig übertragen AWT, Swing, JavaFX & SWT 2
J Das erste Projekt und ein Haufen von Fragen. Der SudokuReader. AWT, Swing, JavaFX & SWT 4
D Java Projekt als Jar AWT, Swing, JavaFX & SWT 3
J jme neues projekt öffnen AWT, Swing, JavaFX & SWT 4
F Netbeans Gui in BlueJ Projekt AWT, Swing, JavaFX & SWT 9
X Resourcen in Projekt einbinden AWT, Swing, JavaFX & SWT 7
R jFreeChart in eine NetBeans Projekt integrieren AWT, Swing, JavaFX & SWT 24
D Swing MVC in Projekt umsetzen AWT, Swing, JavaFX & SWT 71
D Swing Projekt Herangehensweise Swing AWT, Swing, JavaFX & SWT 6
N Swing Projekt - jar ausführen AWT, Swing, JavaFX & SWT 11
C Problem mit Swing Application Framework - Projekt beim AWT, Swing, JavaFX & SWT 2
W netbeans projekt in Eclipse importieren -gui teil geht nicht AWT, Swing, JavaFX & SWT 5
C Mein erstes kleines Swing-Projekt - Probleme AWT, Swing, JavaFX & SWT 8
M Einstellung des Projekt-Verzeichnis in NetBeans AWT, Swing, JavaFX & SWT 4
T Projekt - ChatClient - JEditorPane - Smilies, Vektor AWT, Swing, JavaFX & SWT 2
D Events, Listener, GUI . Größeres Projekt AWT, Swing, JavaFX & SWT 4
M java projekt als exe kompilieren. AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen


Oben