コンテンツにスキップ

GUI プログラミング

  • Javaには、GUIを制御するライブラリがある。SwingがAWTなど。
  • 大学サーバー(リモートのLinux)上でそれを実行し、ウィンドウを自分のパソコンに反映させる方法として、SSHのX11転送というものがある。

X11とWMとDM

Linuxには、「X」と呼ばれるGUIのシステムがある。バージョンが11のため、「X11」や「X Windows System 11」などと呼ばれる。

皆が一般に利用しているパソコンには、主に下記のシステムで構成されている。

  • ウィンドウ・システム、ウィンドウ・サーバー(X.org, X11, Wayland)
  • ウィンドウ・マネージャー(IceWM, Fluxbox,i3,awesome,dwm,OpenboxmKwin,Mutter,Metacity...など)
  • デスクトップ・マネージャー(GDM,KDM,MDM,sddm,LXDMなど)
  • コンポーネント(Qt,GTK+3など、ウィンドウ・ツールキットとも)

WindowsやMacでも、AeroやQuartzなどといったものがある。Linuxでは、上記のかっこ書きのものが該当する。

今回必要なものとして、ウィンドウを映し出すウィンドウ・システムが必要である。

これには、Xmingを用いる。

Xming

上記より、Xmingのsetup.exeファイルをダウンロードする。xming-fontsxming-sourceではなく、xmingをダウンロードする。ダウンロードしたら開く、インストールする。

説明がめんどくさいので、既に書かれている記事を見てください。

Teraterm

多くの人は、Teratermを利用しているかと思います。上記リンクを参考に、「Xクライアントアプリケーションの転送」にチェックする。

大学サーバーに接続する。接続したら、

echo $DISPLAY

を見てください。何も表示されない場合は、以下を実施してください。

接続元を見る

last | head -10

上記コマンドで自分の学籍番号行かつまだstill logged inな行のIPアドレスを確認してください。大体は、10.10.25x.xxみたいな感じです。

次に変数を登録します。

export DISPLAY=[控えたIPアドレス]:0.0

exportは、現在のコマンド画面寄り配下の処理において適用される変数を登録します。(環境変数)
変数名は、DISPLAYです。:0.0というのは、ディスプレイの番号です。

HelloScreen

以下、Javaプログラムを作成し、コンパイル・実行すれば、出てくるはずです。

import javax.swing.*;
import java.awt.*;

public class HelloScreen extends JPanel{
  public static void main( String[] args ) {
    JFrame fr = new JFrame();
    fr.setSize( 200, 150 );
    HelloButton hb = new HelloButton();
    JButton b = new JButton( "HELLO SCREEN" );
    hb.add( b );
    fr.getContentPane().add( hb, BorderLayout.CENTER );
    fr.getRootPane().setDefaultButton( b );
    fr.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    fr.setVisible( true );
  }
}

詳細を書くかは考える。


最終更新日: 2021年4月30日