Po co ustawia się właściciela obiektu JDialog?

0

Witam mam stworzony własny dialog który się uruchamia po wciśnięciu przycisku który jest w obiekcie klasy JPanel (a JPanel jest dodany w klasie JFrame) i zastanawiam się po co mam podawać właściciela tego dialogu(właścicielem musi być obiekt klasy JFrame)
poniżej kod z wywołania dialogu który znajduje się w klasie dziedziczącej po JPanel

 public void actionPerformed(ActionEvent e) {
		// TODO Auto-generated method stub
		Rates rate=new Rates((MyFrame)this.getRootPane().getParent());
	}

A tak na razie wygląda na razie klasa dialogu

package GUI;

import java.awt.Dimension;

import javax.swing.JDialog;
import javax.swing.JPanel;

public class Rates extends JDialog{
	public Rates(MyFrame owner){
		super (owner,true);
		setSize(300,300);
		JPanel panel=new JPanel();
		add(panel);
		setVisible(true);
	}

}

Ps. Dobrze wywołuję dialog? Dziękuję za odpowiedzi :)

1

Po pierwsze, nie musisz podawać właściciela.
Po drugie, właściciel nie musi być typu JFrame.
Po trzecie, jeśli podasz właściciela i podasz drugi argument równy true, to JDialog otworzy się modalnie - właściciel jest niedostępny, tzn. nie ma żadnej interakcji użytkownika programu z właścicielem.

0

@bogdans: dzięki za wyczerpującą odpowiedź :)
Powiedz mi tylko dobrze wywołuję dialog? Gdzieś czytałem że jeszcze za pomocą show() go wywołują albo SwingUtilities.invokeLater(new Runnable)

0

show na pewno nie. Co do potrzeby SwingUtilities.invokeLater(new Runnable()) poczytaj tu http://stackoverflow.com/questions/3551542/swingutilities-invokelater-why-is-it-needed. Ja każde okno typu JDialog otwieram przez setVisible(true), natomiast konstruuję je w konstruktorze głównego okna JFrame, które zazwyczaj wywołuje przez SwingUtilities.invokeLater(new Runnable()).

1 użytkowników online, w tym zalogowanych: 0, gości: 1