Code OK? - JOptionPane ruiniert KDE Sitzung

Status
Nicht offen für weitere Antworten.

clemente

Mitglied
Hallo,
ich bin mir nicht ganz sicher, ob ich einen Fehler mache, oder ob ich einen Bug gefunden habe. Unter bestimmten Voraussetzungen killt Java/Swing einen für KDE wichtigen Prozess (kwin).
Dazu habe ich zwar schon einen "diffusen" Thread erzeugt, konnte das Problem jetzt aber ganz gut eingrenzen:
Grob gesagt habe ich folgendes:
- ein JFrame mit einem Button, der ein zweites Fenster (JDialog) öffnet.
- Das zweite Fenster besitzt wieder einen Knopf, der ein Standard-JOptionPane (yes/no) öffnet.
Das ist schon alles (Code weiter unten).

Wenn ich das ganze starte, und in der Reihenfolge
- das zweite Fenster öffne,
- den Yes/No Dielog öffne,
- einen Knopf drücke und
- das zweite Fenster schließe,
schmiert nach vier, fünf Durchläufen kwin ab.

Ich bin nicht sehr Swing versiert - ist der Code so korrekt? Wenn ja, ist es wohl ein Fehler in KDE (und ich bin fein raus :wink: )

Vielen Dank für Eure Mühe,
Clemente

Die komplette Klasse:
Code:
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class TestGui extends JFrame {

	private JDialog d = null;
	
	/**
	 * Constructor and the following method create 
	 * the first window. It contains a button that 
	 * opens the second window.
	 */

	public TestGui() {
		super();
		JPanel jContentPane = new JPanel();
		jContentPane.add(getJButton());
		this.setContentPane(jContentPane);
	}

	private JButton getJButton() {
		JButton jButton = new JButton();
		jButton.setText("Open Dialog");
		jButton.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				d = getJDialog();
				d.setVisible(true);
			}
		});
		return jButton;
	}
	
	/**
	 * Following methods create the second window. 
	 * It contains a button, that opens a standard
	 * yes/no dialogbox.
	 */
	
	private JDialog getJDialog() {
		JDialog jDialog = new JDialog();
		JPanel jContentPane = new JPanel();
		jContentPane.add(getJButton1());
		jDialog.setContentPane(jContentPane);
		return jDialog;
	}
	
	private JButton getJButton1() {
		JButton jButton = new JButton("Open next dialog");
		jButton.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(java.awt.event.ActionEvent e) {
				
				if (JOptionPane.showConfirmDialog(null, "Bla, bla, bla", "Hi...",  
					    JOptionPane.YES_NO_OPTION) == 0) {
					System.out.println("Yes clicked...");
				}
			}
		});
		return jButton;
	}
	
	
	/**
	 * Starting the test gui...
	 */
	
	public static void main(String[] args) {
		TestGui test = new TestGui();
		test.setVisible(true);
	}
}
 
Hallo MPW,

Habe KDE in den Versionen 3.3.4, 3.4.3 und 3.5.x ausprobiert. IMHO ist KDE nur KDE - jedenfalls kenne ich keine andere Oberfläche / kein anderes Programm mit dem Namen. (@Bullseye: :wink🙂

Meine große Frage ist eigentlich, ob ich, so wie Swinge, einen kolossalen Fehler mache, oder ob etwas, das wie die Klasse oben gemacht ist, eigentlich OK ist.
Ich möchte nicht großartig von Bugs und Fehlern bei anderen Programmen reden, wenn ich selber Mist gebaut habe :wink:

Danke an jeden, der sich die Mühe macht!
Clemente
 
Hm...Sorry ich habe so ein verhalten noch nie festgestellt. IMHO sieht die Klasse eigentlich OK aus. Wenn ich mich nicht irre führt KDE doch auch nen Log oder? Vielleicht gibt das Aufschluß darauf was passiert ist und ob es wirklich an Java liegt.

[EDIT] Welche Distribution benutzt du und wie hast du das JDK installiert? [/EDIT]
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben