Swing com problema no linux

9 respostas
F

Uma interface gráfica desenvolvida no eclipse em Windows, usando swing, está funcionando perfeitamente. Já no eclipse, executando em ambiente linux, não funciona. Por não funcionar quero dizer que a janela abre, mas nenhum componente é mostrado nesta janela (fica tudo branco).

O que pode ser isso?

Obrigado

ps:
SO: Ubuntu 8.04
jdk: 1.6

9 Respostas

Jair_Rillo_Junior

Provavelmente o Compiz está ativado né?
Existe um problema (versões anteriories a 1.6, se eu não me engano), onde o Swing com o Compiz ativo não funciona direito.

Desativa os efeitos do Ubuntu e tenta rodar, ou então, tente utilizar a JVM 1.6

F

Opa Jair, obrigado pela resposta.

compiz ja encontrava-se desativado aqui e veja:
$java -version
java version "1.6.0_0"
OpenJDK Runtime Environment (build 1.6.0_0-b11)
OpenJDK Client VM (build 1.6.0_0-b11, mixed mode, sharing)

acredito que seja a jvm 1.6 :x
mais alguma sugestão?

Obrigado novamente

afamorim

o problema que eu tive foi que eu rodava com o JDK 1.5 e nao funcionava o SWING, quando eu rodava com a versao 1.6, tudo funcionava perfeitamente.

sem ter que desativar o compiz.

Jair_Rillo_Junior

felipediogo:
Opa Jair, obrigado pela resposta.

compiz ja encontrava-se desativado aqui e veja:
$java -version
java version "1.6.0_0"
OpenJDK Runtime Environment (build 1.6.0_0-b11)
OpenJDK Client VM (build 1.6.0_0-b11, mixed mode, sharing)

acredito que seja a jvm 1.6 :x
mais alguma sugestão?

Obrigado novamente

Tirou todos os efeitos do Ubuntu? Tenta isso

alexandre.olipe

Cara, seguinte.
Sou usuário novo no Guj e no Swing (to mexendo com java há uma semana apenas), mas tive o mesmo problema que vc (só que no meu problema às vezes também tinha que tentar abrir varias vezes no windows para que exibisse os botões e todos os outros componentes corretamente).

No meu caso, eu estava colocando o frame.setVisible(true) e o panel.setVisible(true) junto com as outras características do frame e do panel respectivamente. Então resolvi o problema apenas setando o o JPanel como visível somente após todas as linhas que adicionavam os componentes ao JPanel, e setando o JFrame como visível somente após setar o JPanel como visível.

Tipo:

import javax.swing.*;

public class Teste {
	JFrame frame;
	JPanel panel;
	JButton botao;
	
	Teste(){
		frame = new JFrame();
		panel = new JPanel();
		botao = new JButton("teste");
		
		frame.setSize(300,300);
		frame.setLayout(null);
		
		panel.setSize(30,300);
		panel.setLayout(null);
		
		panel.setBounds(0, 0, 300, 300);
		botao.setBounds(100, 90, 100, 27);
		
		panel.add(botao);
		
		panel.setVisible(true);
		
		frame.add(panel);
		
		frame.setVisible(true);
	}
	
	public static void main(String args[]){
		Teste teste = new Teste();
	}
}

Como sou novo em java e swing, posso ter falado alguma caca e, se realmente falei, por favor me corrijam.

Tenta isso aí e posta pra gente se deu certo.

Se não der, tenta postar o trecho do código que cria a janela e os botões, campos etc…

Fallow

F

obrigado alexandre, mas acredito que esse nao seja o problema aqui. a aplicacao funciona perfeitamente em ambiente windows. o problema ocorre quando tento executa-lo em ambiente linux.

o compiz estava desligado, efeitos da area de trabalho desativados etc.

estará o problema relacionado às partes de awt usadas pelo swing? essa é a unica hipotese que considero razoavel, uma vez que deveria ser um programa 100% portável, exceto pelas funcionalidades que ele pega do awt (como gerenciadores de layout por exemplo).
e entao pessoa, mais alguma sugestão?

alexandre.olipe

Pois é, quando eu tive esse problema achei que fosse exatamente problema com os layouts, os listeners (como o ListSelectionListener por ex.) ou alguma outra parte que usa AWT. Procurei muito na internet e não achei ninguém reclamando disso ou com problema parecido (vc é o primeiro).
O único jeito que achei foi debugar o código pra tentar ver onde é que ele tava dando pau, e quando executei o modo debugger com alguns BreakPoints percebi que a classe criava o frame e setava como visível (nisso aparecia a janela em branco), depois disso eram criados todos os componentes e adicionados ao JPanel que era adicionado ao JFrame (mas na tela nada acontecia). Aí eu tentei só mover a linha que tornava visível pro fim do código(quando tudo ja havia sido adicionado) e aí funcionou (tando no Windows como no Linux).

Resumidamente: O problema não era o AWT, pois agora está funcionando sem nenhum bug (talvez por isso eu não tenha encontrado a solução no google ou num dos foruns de java)

Bem… mas isso aconteceu no meu caso. Se vc já tentou fazer isso e não deu certo, tenta fazer um debug no código e ver de que trecho ele não passa.

F

Obrigado alexandre, mas o problema nao é esse.
Nada funciona. Se alguém tiver uma solução eu fico agradecido.

alexandre.olipe

Hei… Posta aí o trecho do código que está dando pau pra gente ver o que dá pra concluir… Talvez a gente consiga achar algum problema que tá passando despercebido ou pelo menos podemos ajudar a procurar por uma solução (atirar no escuro é f***)…

Té mais

Criado 18 de novembro de 2008
Ultima resposta 2 de dez. de 2008
Respostas 9
Participantes 4