Archive for 1月 1st, 2013

  1. Hello, Swing(Jasmin) World!

    Posted on 1月 1st, 2013 by cx20

    Swing(Java)

    Swing は AWT(Abstract Window Toolkit) を拡張したものであり Java で GUI を扱うためのライブラリである。
    J2SE 1.2 以降は AWT よりも Swing が使われることが多くなっている。
    以下は Jasmin による Swing の使用例となっている。

    ソースコード

    ; Produced by NeoJasminVisitor (tinapoc)
    ; http://tinapoc.sourceforge.net
    ; The original JasminVisitor is part of the BCEL
    ; http://jakarta.apache.org/bcel/
    ; Sun Dec 02 01:16:09 JST 2012
     
    .bytecode 51.0
    .source Hello.java
    .class public Hello
    .super javax/swing/JFrame
     
    .method public static main([Ljava/lang/String;)V
        .limit stack 3
        .limit locals 2
        .var 0 is arg0 [Ljava/lang/String; from Label0 to Label1
     
        Label0:
    .line 7
           0: new Hello
           3: dup
           4: ldc "Hello, World"
           6: invokespecial Hello/<init>(Ljava/lang/String;)V
           9: astore_1
     
        .line 8
          10: aload_1
          11: iconst_1
          12: invokevirtual Hello/setVisible(Z)V
     
        Label1:
    .line 9
          15: return
     
    .end method
     
     
    .method  <init>(Ljava/lang/String;)V
        .limit stack 3
        .limit locals 3
        .var 0 is this LHello; from Label0 to Label1
        .var 1 is arg0 Ljava/lang/String; from Label0 to Label1
     
        Label0:
    .line 12
           0: aload_0
           1: aload_1
           2: invokespecial javax/swing/JFrame/<init>(Ljava/lang/String;)V
     
        .line 13
           5: aload_0
           6: iconst_3
           7: invokevirtual Hello/setDefaultCloseOperation(I)V
     
        .line 14
          10: aload_0
          11: aconst_null
          12: invokevirtual Hello/setLocationRelativeTo(Ljava/awt/Component;)V
     
        .line 15
          15: aload_0
          16: sipush 640
          19: sipush 480
          22: invokevirtual Hello/setSize(II)V
     
        .line 17
          25: new javax/swing/JLabel
          28: dup
          29: ldc "Hello, Swing World!"
          31: invokespecial javax/swing/JLabel/<init>(Ljava/lang/String;)V
          34: astore_2
     
        .line 18
          35: aload_2
          36: iconst_1
          37: invokevirtual javax/swing/JLabel/setVerticalAlignment(I)V
     
        .line 19
          40: aload_0
          41: aload_2
          42: invokevirtual Hello/add(Ljava/awt/Component;)Ljava/awt/Component;
          45: pop
     
        Label1:
    .line 20
          46: return
     
    .end method

    コンパイル&実行方法

    C:¥> java -jar jasmin.jar Hello.j
    C:¥> javaw Hello

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Swing World!                       |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+