Internal frames to front?

olá pessoal, a um tempo mandei uma pergunta mas ninguem pode me ajudar com meu problema, por isso insisto :frowning:

Tenho um jPanel ao qual adiciono jInternal Frames, vários, meu problema consiste em que eu quero que quando o usuario clicar em um inernal frame dos que estao para traas este venha pra frente, e quando abrir um novo internal frame este apareça sobrepondo os outro, até agora ainda não consegui faze-lo. será que alguem poderia me ajudar?

na outra pergunta alguns me sugeriram usar setSelected(true); mas não é isso, isso nao muda nada :?: , nada mesmo. enfim

obrigado pessoal,

Gile

Fica um pouco complicado ajudar assim, pq nao dá pra ter mta noção do que ta acontecendo sem algum exemplo!

Se puder colocar~parte do codigo simplificado que gere o erro, seria otimo pra ajudar…

Eu fiz varios exemplos simples e dá certo, entao acho q pode ser alguma configuração sua… To usando o jsdk 1.4.2 e win2000

Flw!

olá, o que tenho é o seguinte

eu chamo o jintFrame assim:

private void jMenuFuncActionPerformed(ActionEvent evt){
    JInternalFrame jIntF1 = (JInternalFrame)mapa.get("JIntFFunc");
        if (jIntF1==null ){
	jIntF1 = new JIntFFunc();
	mapa.put("JIntFFunc", jIntF1);
       }
       jPanel1.add(jIntF1);
       jIntF1.show();		
}

chamo assim.
se quiser algo mais é só falar

jPanel1 e do tipo JPanel mesmo

Ele tá lançando essa excessao pra vc ???

java.lang.IllegalArgumentException: illegal component position

To pegando essa excessao qdo a janela ta aberta e adicionada no desktop. Observe que vc ta adicionando e dando um show na mesma referencia que ja esta lá… isso pq vc ta pegando do mapa ( hashmap ).

Isso aqui funfou como sendo um Internalframe

Posta ai o codigo de inicializacao da tua classe que estende o InterFrame, a JIntFFunc.

	private void jMenuFuncActionPerformed() {
		JInternalFrame jIntF1 = (JInternalFrame) mapa.get("JIntFFunc");
		//if (jIntF1 == null) {
			jIntF1 = new JInternalFrame("Nao achou");
			//mapa.put("JIntFFunc", jIntF1);
		//}
		panel1.add(jIntF1);
		jIntF1.setSize(200,200);
		jIntF1.show();
	} 

vou postar uma que extende menor, a de funcionario é enorme

[code]public class JIntFCargo extends br.com.netset.hyperpos.gui.forms.JIntFCargo {

public JIntFCargo(){
	super();
	iniciaTabela();
	postInitComponents();
}	

/*****************
 * INICIA TABELA * 
 *****************/

private void iniciaTabela(){
	/* tabela */
	MyTableModel myModel = new MyTableModel();
	final List lista = new ArrayList();
	
	//nova linha
	lista.add(new Object []{"", "", new Boolean(false)});
	myModel.setData(lista);
	
	//nomes das colunas
	myModel.setColumnNames(new String[]{"Id.", "Cargo", "Repara?"});
	jTable.setModel(myModel);
	
	jTable.addKeyListener(
		new KeyListener(){
			public void keyPressed(KeyEvent e) {
				
				// se enter ou seta pra baixo
				if((e.getKeyCode() == KeyEvent.VK_ENTER)||(e.getKeyCode() == KeyEvent.VK_DOWN)){
					//SE for ultima linha
					if((jTable.getSelectedRow() == jTable.getRowCount()-1)){
						//insere nova linha na tabela
						lista.add(new Object []{"", "", new Boolean(false)});
						jTable.show();
						jTable.editCellAt(jTable.getRowCount()-1,0);
						int linha = jTable.getSelectedRow();
						jTable.changeSelection(linha,0,true,true);
					}
				}						
			}
			public void keyReleased(KeyEvent e) {}
			public void keyTyped(KeyEvent e) {}
		}
	);
	//define tamanho preferencial das colunas
	jTable.getColumnModel().getColumn(2).setPreferredWidth(40);
	jTable.getColumnModel().getColumn(1).setPreferredWidth(140);
	jTable.getColumnModel().getColumn(0).setPreferredWidth(140);
}	

/**********************
 * INICIA COMPONENTES * 
 **********************/

private void postInitComponents(){
	this.addFocusListener(JIntFFocusListener.getInstance());
	
	JComboBox comboBox = new JComboBox();
	
	//insere variaveis no combo box
	comboBox.addItem("Supervisor");//exemplo
	//insere o comboBox na tabela
	jTable.getColumnModel().getColumn(1).setCellEditor(new DefaultCellEditor(comboBox));
	
	//evento para botao ok
	jButOk.addActionListener(
		new ActionListener(){
			public void actionPerformed(ActionEvent e){
				jButOkActionPerformed(e);//chama ação
			}
		});
}
private void jButOkActionPerformed(ActionEvent e){
	this.dispose();//fecha janela e termina execução
}

}
[/code]

cara acho desnecessario postar a jIntFFunc, pq tah normal, e foi feita no netBeans

mas se for necessario mesmo da um toke

[]'s

mudei o código depois q vc mandou a msg, agora esta assim: mas ainda nao funfa :roll:

Olá lordze… tudo bem !?

para que o método setSelected dê certo, precisa ser feito após a adição da internal frame no desktop.

		
                  desktop.add(internalFrame);
						try {
										internalFrame.setSelected(true);
									} catch (PropertyVetoException e) {
									}

espero ter ajudado :smiley:

1 curtida

nao funciona, já tentei isso nesta posição tambem, nao sei o que mais posso fazer

lordze,

qual é o layout que você esta utilizando neste JPanel ?

Abraços,

Assumindo que JIntFCargo extende sim uma JInterFrame, nao tem nada de errado com ele…

:frowning:

gridBagLayout

[]'s

vc ta adicionando os InternalFrames em um JPanel ?? :shock:

panel1.add(jIntF1);

sim, claro

:shock: :wink: rsssss…
Nunca tentei… sempre usei so com DesktopPane.