Re:InternalFrame + Dialog

Esse registro extende JDialog eu presumo?
Vc não deveria estar unindo essa JDialog ao desktop pane!
Se vc tah usando internalframes, presumo que elas estão “ligadas” ao JFrame pai, e é a ele que as Janelas Filhas(suas internals) pertencem.
Se vc tem um frame principal vc faz:

JDialog d = new JDialog(seuJFramePrincipal, "nome de sua app");
Uma JDialog não é da mesma hierarquia que uma internalFrame(lembrando que JInternalFrame é subclasse de JComponent e não do JFrame ), logo, vc não pode “unir ela a internal, vc une as internals ao JFrame”, apenas crie uma nova JDialog(sem um pai).

[quote=diogoroos]Eu tenho um Applet com alguns jMenuItem’s. Cada jMenuItem chama um jInternalFrame (de outro pacote) e esses jInternalFrame são adicionados no jDesktopPane do Applet, isso significa que o Applet usa swing. Dentro de um jInternalFrame eu tenho alguns jButtons que deverá abrir uma pequena janela de pesquisa. O que estou querendo é que, quando clicar no jButton de um jInternalFrame abra uma janela (seja jDialog ou um outro jInternalFrame) que trave todo fundo, entendeu ?
Eu tenho um programa em C que faz o seguinte:
Tem o menu com alguns item’s, cada item chama um form. Dentro de alguns form’s tem alguns botões (do lado de um campo tipo jTextField) que, quando clicados, abre uma pequena janela caso a pessoa queira pesquisar qual produto usar.
Sei que o jDialog trava o fundo enquanto ele não for fechado, mas não sei ele pode ser aberto através de um jButton de um jInternalFrame.
Eu consegui abrir um jInternalFrame de um jInternalFrame, mas ele não trava o fundo… Complique ?[/quote]

vc quer fazer como uma aplicação MDI…

tenta este exemplo aqui…qualquer coisa mando outro

[code]import java.awt.Dimension;
import java.awt.GridBagLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;

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

public class DialogDesktop extends JFrame {

public DialogDesktop(String title) {
super(title);
setDefaultCloseOperation(EXIT_ON_CLOSE);

final JDesktopPane desk = new JDesktopPane();
setContentPane(desk);

// Create our "real" application container; use any layout manager we
// want.
final JPanel p = new JPanel(new GridBagLayout());

// Listen for desktop resize events so we can resize p. This will ensure
// that
// our container always fills the entire desktop.
desk.addComponentListener(new ComponentAdapter() {
  public void componentResized(ComponentEvent ev) {
    Dimension deskSize = desk.getSize();
    p.setBounds(0, 0, deskSize.width, deskSize.height);
    p.validate();
  }
});

// Add our application panel to the desktop. Any layer below the
// MODAL_LAYER
// (where the dialogs will appear) is fine. We'll just use the default
// in
// this example.
desk.add(p);

// Fill out our app with a few buttons that create dialogs
JButton input = new JButton("Input");
JButton confirm = new JButton("Confirm");
JButton message = new JButton("Message");
p.add(input);
p.add(confirm);
p.add(message);

input.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent ev) {
    JOptionPane.showInternalInputDialog(desk, "Enter Name");
  }
});

confirm.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent ev) {
    JOptionPane.showInternalConfirmDialog(desk, "Is this OK?");
  }
});

message.addActionListener(new ActionListener() {
  public void actionPerformed(ActionEvent ev) {
    JOptionPane.showInternalMessageDialog(desk, "The End");
  }
});

}

// A simple test program
public static void main(String[] args) {
DialogDesktop td = new DialogDesktop(“Desktop”);
td.setSize(350, 250);
td.setVisible(true);
}
} [/code]

Pessoal, como eu faço para um jButton de um jInternalFrame chamar um JDialog ?

Eu tentei assim, mas não deu, o JDialog não aparece, só que tbm não dá erro:

import registros.*; // pacote onde está os JDialog´s .. private JDialog frame; .. public void actionPerformed(ActionEvent e) { if(e.getSource() == jButton8) { frame = new registro(); jDesktopPane.add(frame); frame.show(); frame.setEnabled(true);
Valeu

Não consegui… vou tentar explicar melhor

Eu tenho um Applet com alguns jMenuItem’s. Cada jMenuItem chama um jInternalFrame (de outro pacote) e esses jInternalFrame são adicionados no jDesktopPane do Applet, isso significa que o Applet usa swing. Dentro de um jInternalFrame eu tenho alguns jButtons que deverá abrir uma pequena janela de pesquisa. O que estou querendo é que, quando clicar no jButton de um jInternalFrame abra uma janela (seja jDialog ou um outro jInternalFrame) que trave todo fundo, entendeu ?
Eu tenho um programa em C que faz o seguinte:
Tem o menu com alguns item’s, cada item chama um form. Dentro de alguns form’s tem alguns botões (do lado de um campo tipo jTextField) que, quando clicados, abre uma pequena janela caso a pessoa queira pesquisar qual produto usar.
Sei que o jDialog trava o fundo enquanto ele não for fechado, mas não sei ele pode ser aberto através de um jButton de um jInternalFrame.
Eu consegui abrir um jInternalFrame de um jInternalFrame, mas ele não trava o fundo… Complique ?

É exatamente isso dsfextreme, quando abre o JOptionPane ele bloqueia o fundo… mas como eu faria isso para ele abrir de uma classe externa ? Eu como abaixo, mas não abre porém não da erro:

import registro.*; // Pacote onde estão armazenado meus JOptionPane's (onde está o registro2) private JOptionPane registro2; ... jButton8.addActionListener(this); ... public void actionPerformed(ActionEvent e) { if(e.getSource() == jButton8){ JOptionPane registro2 = new JOptionPane(); registro2.setVisible(true); registro2.add(jDesktopPane); ...
Então, eu tenho o registro2 que é um JOptionPane que está no pacote “registro”, o que estou querendo é que, quando clicar no jButton8 abra o registro2(JOptionPane).

Resumindo é o seguinte:
Um JFrame pai que abre jInternalFrame’s filhos que são adicionados ao JFrame pai;
Alguns jInternalFrames que tem jButtons, deve abrir JDialog quando clicar no jButton. As JDialog’s são dos JInternal’s, e não do JFrame.
JFrame = avô;
JInternal = pai;
JDialog = filho; //Seria mais ou menos isso
Quando abrir o JDialog do JInternal, o JDialog deve travar o fundo até que seja finalizado com close.
Alguém tem idéia ?

Moçada, consegui da seguinte forma:

Cadastro.java //Meu JInternalFrame

import registro.*; //Pacote onde está os JDialog's ... private JDialog frame; ... private JButton getJButton() { if (jButton == null) { jButton = new JButton(); jButton.setBounds(new Rectangle(164, 174, 23, 22)); jButton.addActionListener(this); } } ... public void actionPerformed(ActionEvent e) { if(e.getSource() == jButton){ frame = new dialog(); //dialog é um JDialog do pacote registro frame.setVisible(true); } }

dialog.java //Minha JDialog do pacote registro

package registros;

import javax.swing.JPanel;
import java.awt.BorderLayout;
import javax.swing.JDialog;
import java.awt.Point;

public class dialog extends JDialog {

	private static final long serialVersionUID = 1L;

	private JPanel jContentPane = null;

	public dialog() {
		super();
		initialize();
	}

	private void initialize() {
		this.setSize(420, 366);
		this.setLocation(new Point(300, 200));
		this.setResizable(false);
		this.setModal(true);                //Perceba que ela tem que estar com setModal(true)
		this.setTitle("Registro");
		this.setContentPane(getJContentPane());
	}

	private JPanel getJContentPane() {
		if (jContentPane == null) {
			jContentPane = new JPanel();
			jContentPane.setLayout(new BorderLayout());
		}
		return jContentPane;
	}

} 

Observação: O meu jInternalFrame é um filho de um JFrame.
O JDialog deve estar com setModal(true).

É isso pessoal, espero ter contruibuído e se alguém tiver dificuldade posta aqui…