これは、私がJava UI開発に比較的新しいと言ってこれを始めるでしょう。関係するすべてのマシンがRHEL6を実行しています。 JavaはOpenJDK 1.7です。私は、アプリケーションが(タイプミスを言い訳してください、私はinternetless環境から、このコピー手に持っていた)があります。JavaアプリケーションがリモートXvncサーバを終了させる
import javax.swing.*;
import java.awt.*;
class TestApp{
public static void main(String[] args){
SwingUtilities.invokeLater(new Runnable(){
@Override
public void run(){
GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
Font[] fonts = e.getAllFonts();
for (Font font: fonts){
System.out.println(font.getFontName());
}
JTextArea text_pane = new JTextArea();
System.out.println("Using " + text_pane.getFont().getFontName());
text_pane.setText("HI");
JFrame j = new JFrame();
j.add(text_pane);
j.setSize(new Dimension(100,100));
j.setVisible(true);
}
});
}
}
あなたが見ることができるように、このすべてが利用可能なすべてのフォントファミリは、デフォルトのフォントファミリを印刷するプリントがあるん、少しのテキストを含む小さなウィンドウを表示します。これをローカルで実行するとうまくいきます。 、99私は、リモートマシン、輸出DISPLAY =に私のアプリをscpした場合は、コマンドで
./Xvnc :99 -geometery 1000x1000 -ac
を開始しました::私は、ディスプレイ上でTurboVncを実行しているリモートマシン(turbo1.1)が99.0、およびそれを実行し、それが動作します良い。ただし、remotehost:99.0にエクスポートされたディスプレイでアプリケーションをローカルで実行しようとすると、リモートのXvncサーバーが2回の空きまたは破損でクラッシュします。バックトレースでは、私はAddGlyph呼び出しを参照してください。私の限られた経験は、これがフォントの問題だと考えています。つまり、ローカルに動作しているアプリケーションがリモートマシンで利用できないフォントを使用しようとしています。
System.out.println("Using " + text_pane.getFont().getFontName());
コールはいずれかのマシン上で実行同じフォント名(Dialog.plain)をプリントアウトしないが、私はそれが実際には何を意味かはわかりません。この問題を回避する方法はありますか?私は間違った角度から完全に来ていますか? xeyesとxtermは、ローカルマシンからリモートディスプレイにエクスポートされたときに正常に動作することに注意してください。それは、それを殺すJavaアプリケーションです。