emacs編寫java swing程式

來源:互聯網
上載者:User
Linux下面使用emacs 編寫java程式,而不使用eclipse、netbeans等IDE工具,給我一種很酷的感覺。
其實最主要的要知道一些細節:
1)jdk1.6版本後面運行程式類通常格式如下:
java packageName.className
並且運行這行命令的當前路徑應該在packageName同名目錄的外面
2)如果兩個類同屬於一個package,先使用javac編譯好一個類A,另一個依賴A的類B編譯時間用如下命令:
javac -d . B.java

我使用 了makefile來解決第二個編譯問題:
JFLAGS = -g
JC = javac -d .
.SUFFIXES: .java .class
.java.class:
    $(JC) $(JFLAGS) $*.java

CLASSES = /
        MainFrame.java/
    Main.java

default: classes

classes: $(CLASSES:.java=.class)

clean:
    $(RM) *.class

可以參考下面的文章來查看我使用的makefile的文法:
http://www.cs.swarthmore.edu/~newhall/unixhelp/javamakefiles.html

大意是make命令會按照如下順序執行:
1)default:classes
2)classes: $(CLASSES:.java=.class) //改行實際上是進行尾碼名的替換,將.java都換成.class
3)產生MainFrame.class,當然會導致編譯MainFrame.java
4)產生Main.class,當然會導致編譯Main.java
結果是建立了一個子目錄freebird(和package同名),並且兩個類的.class檔案都已經產生在該目錄內。

然後我就可以使用java freebird.Main 來執行該程式了。(記住在子目錄freebird的外面執行)

3)Java Swing編程技巧
讓Form視窗位於螢幕中央:
首先要獲得螢幕的尺寸,通過調用Toolkit.getDefaultToolkit()來獲得Toolkit對象的引用,該對象提供的getScreenSize方法可以或得Dimension對象的引用,該對象的width和height屬性就是螢幕的寬度和高度。下面的公式可以獲得讓指定尺寸的視窗位於螢幕中央。
x=(screenWidth-formWidth)/2 ;  y=(screenHeight-formHeight)/2

JFrame的多層結構:
JFrame從底部向上包括了根面板、層級面板、玻璃面板和內容面板。通常我們的控制項都是添加到內容面板上,即便你直接調用JFrame.add方法,jdk實現代碼仍然也是將控制項添加到內容面板上。
我們可以通過JFrame.getContentPane方法來獲得該內容面板。

下面的代碼建立了一個唯讀文本控制項,並加入到內容面板上。
   pingJiaName=new JTextField("hello",20);
    add(pingJiaName);
    pingJiaName.setEditable(false);

布局管理器:
我這裡只使用了FlowLayout,BorderLayout和Panel。
FlowLayout類似於html的流布局,控制項總是自動的從上到下,從左至右排列,當一行沒有足夠的空間時,控制項會自動排在下一行。我們還可以設定控制項之間的水平和垂直的間隔距離,以及對齊(置中,偏左或者偏右)。

BorderLayout將視窗分成東、西、南、北、中五個地區。我們可以將控制項指定在其中一個地區上。Panel可以被看成一個擁有容器功能的控制項,它可以包含其他的控制項,也可以作為一個控制項放置在別的容器裡。
下面的一個例子可以解釋這三個組件合作的效果。(注意,FlowLayout是預設布局)
package freebird;

import java.awt.Frame;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;
public class MainFrame extends JFrame
{

    private JTextField pingJiaName;
    private JPanel panel;

    public MainFrame()
    {
    super("努力學習日語,每天都要進步一點");
    setSize(1024,768);
    Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
    setLocation((screenSize.width-1024)/2,(screenSize.height-768)/2);
    addWindowListener(new WindowAdapter()
        {
        public void windowClosing(WindowEvent e)
        {
            System.exit(0);
        }
        }
        );

    initComponents();
    }

    private void initComponents()
    {
    panel=new JPanel();
    //panel.setLayout(new BorderLayout());
    pingJiaName=new JTextField("hello",20);
    pingJiaName.setEditable(false);
    panel.add(pingJiaName);
    add(panel,BorderLayout.NORTH);
    setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
   
    }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.