Internal frames to front?

15 respostas
L

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

15 Respostas

brlima

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!

L

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

brlima

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 ).

brlima

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();
	}
L

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

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
	}
}
L

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

mas se for necessario mesmo da um toke

[]'s

L

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

R

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:

L

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

R

lordze,

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

Abraços,

brlima

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

:frowning:

L

gridBagLayout

[]'s

brlima

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

L

panel1.add(jIntF1);

sim, claro

brlima

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

Criado 29 de junho de 2004
Ultima resposta 30 de jun. de 2004
Respostas 15
Participantes 3