emacs编程java_emacs编写java swing程序

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);

}

}

1.png

原文链接:

http://blog.csdn.net/sheismylife/article/details/1900994

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值