Comportamento estranho da GUI Java no Windows PC via tunelamento SSH de / para a máquina Linux

1

Eu tenho um problema muito estranho com uma GUI Java que eu construí no trabalho. É tão estranho que nem sei por onde começar a procurar ajuda!

Temos um sistema independente em um local externo que consiste em um PC com Windows, executando o XP e uma máquina SuSE Linux. Eu construí uma GUI Java que executa alguns scripts bash na máquina Linux. A GUI é iniciada a partir da máquina do Windows porque o usuário não é uma pessoa do Linux. A GUI foi criada para substituir os scripts que apresentaram ao usuário os prompts de linha de comando para fornecer entradas para os scripts de processamento principais.

O usuário clica em um ícone na área de trabalho do Windows que executa um arquivo em lotes do DOS (* .bat). O arquivo em lote usa plink, com uma sessão PuTTY armazenada, para conectar-se à máquina Linux e para executar o comando "java -jar XXX.jar" para iniciar a GUI. A GUI é exibida no Windows PC devido ao Cygwin / X X Server em execução no Windows PC.

Ok. Agora para a estranheza. Se eu deixar a GUI no local onde inicialmente aparece, está tudo bem. Se eu mover a GUI, os menus suspensos (caixas de combinação suspensas e menus suspensos) não funcionarão mais corretamente. E SOMENTE os menus suspensos. Tudo o resto funciona bem (botões, campos de texto, ...). Se eu mover a GUI de volta ao seu local original, tudo funcionará bem. Se eu clicar, segurar e arrastar o cursor do mouse para onde a GUI inicialmente apareceu (deixando a GUI onde eu a movi), os menus suspensos funcionam corretamente.

No começo, achei que tinha um problema com a maneira como inicializei os menus suspensos, mas não tenho mais tanta certeza. Eu estou querendo saber se há algo estranho acontecendo com as janelas < - > massa de vidraceiro < - > linux ou as configurações do Xwin.

Contribuir para não conseguir resolver isso é que não posso replicar esse comportamento no trabalho. Infelizmente não temos uma réplica exata do sistema externo; Estou testando / construindo esta GUI em uma máquina XP para Debian Linux.

Como alguém viu algo assim? Alguma sugestão sobre o que pode estar acontecendo aqui?

Graças a um bilhão

Bill

    
por Bill Doss 26.01.2012 / 23:02

3 respostas

0

Não acho que executar o redirecionamento do Java pelo X seja uma boa ideia.

Por que você não coloca o programa Java no PC com Windows e o utiliza para iniciar o plink e executar o comando? Se você tiver o código-fonte do programa Java, deve ser trivial adicionar uma classe que envolva e substitua Runtime.getRuntime().exec() e coloque plink na frente da linha de comando. Então talvez você possa trabalhar na classe um pouco para usar uma sessão plink para tudo. Em seguida, você também pode criar outra classe com a mesma interface, mas não adiciona o plink para que seu programa Java possa ser executado no Windows e no Linux.

    
por 27.01.2012 / 02:24
1

Com o Java 1.7, você pode usar -Dsun.java2d.xrender=true ao usar um X Display remoto. Ele faz java ciente que está sendo executado no X. Consulte o link

    
por 31.10.2014 / 17:21
0

Pode ter algo a ver com a aceleração de hardware do Java 2D, o sistema gráfico do Java.

Tente desativar qualquer aceleração de hardware adicionando a seguinte opção de linha de comando do processo Java:

-Dsun.java2d.d3d=false

Há também uma referência completa às configurações do Java 2D aqui . Desativar o 3D Direct tornará a interface do usuário mais lenta, mas para interfaces de usuário simples com apenas menus e sem animações, não importa.

    
por 26.01.2012 / 23:47