
Frame f = new Frame("new title");//可以指定new title标题
fsetBachgroundColor(ColorBLUE);//设置背景是蓝色
fsetVisible(true);//可视的,false默认看不见
faddLayout(null);//布局比较的复杂,默认赋值为null,
fsetBounds(3,4,100,200);//位置是左上角的坐标是3,4;窗口的宽是100,高是200单位是cm
faddWindowLisenter(new Lisenter(){
@override
public void window_closing(){//反正里面的重写的发法很多,能够关闭窗口的方法是带closing那个方法
fdispose;//关闭窗口
}
});大致这些就能看到窗口了,里面可能有单词拼错,最重要的是可以在里面添加菜单,文本域,选择框之类,先new,比如Menu m = new Menu("文件");//菜单的对象,然后fadd(m);即可添加菜单
典型的包括窗口(Window)、框架(Frame/JFrame)、对话框(Dialog/JDialog)、面板(Panel/JPanel)等。只有先创建了这些容器,其它界面元素如按钮(Button/JButton)、标签(Label/JLabel)、文本框(TextField/JTextField)等才有地方放。
②添加组件
为了实现GUI应用程序的功能,为了与用户交换,需要在容器上添加各种组件/控件。这需要根据具体的功能要求来决定用什么组件。例如,如果需要提示信息,可用标签(Label/JLabel);如果需要输入少量文本,可用文本框(TextField/JTextField);如果需要输入较多文本,可用文本区域(TextArea/JTextArea);如果需要输入密码,可用密码域(JPasswordField)等等。
③安排组件
与传统的Windows环境下的GUI软件开发工具不同,为了更好地实现跨平台,Java程序中各组件的位置、大小一般不是以绝对量来衡量,而是以相对量来衡量。例如有时候,程序的组件的位置是按"东/East"、"西/West"、"南/South"、"北/North"、"中 /Center"这种方位来标识的。因此,在组织界面时,除了要考虑所需的组件种类外,还需要考虑如何安排这些组件的位置与大小。这一般是通过设置布局管理器(Layout Manager)及其相关属性来实现的。事实上上述按方位来安排组件就是采用了Java中多种布局管理器里的BorderLayout布局管理器。
为了完成一个GUI应用程序所应具备的功能,除了适当地安排各种组件产生美观的界面外,还需要处理各种界面元素事件,以便真正实现与用户的交换,完成程序的功能。在Java程序中这一般是通过实现适当的事件监听者接口来完成的。
其实无论在什么平台下,GUI应用程序的基本开发方法都是相似的。一般都包括下面这样四个步骤:
①创建容器
首先要创建一个GUI应用程序,需要创建一个用于容纳所有其它GUI组件元素的载体,Java中称为容器。典型的包括窗口(Window)、框架(Frame/JFrame)、对话框(Dialog/JDialog)、面板(Panel/JPanel)等。只有先创建了这些容器,其它界面元素如按钮(Button/JButton)、标签(Label/JLabel)、文本框(TextField/JTextField)等才有地方放。 ②添加组件
为了实现GUI应用程序的功能,为了与用户交换,需要在容器上添加各种组件/控件。这需要根据具体的功能要求来决定用什么组件。例如,如果需要提示信息,可用标签(Label/JLabel);如果需要输入少量文本,可用文本框(TextField/JTextField);如果需要输入较多文本,可用文本区域(TextArea/JTextArea);如果需要输入密码,可用密码域(JPasswordField)等等。
③安排组件
与传统的Windows环境下的GUI软件开发工具不同,为了更好地实现跨平台,Java程序中各组件的位置、大小一般不是以绝对量来衡量,而是以相对量来衡量。例如有时候,程序的组件的位置是按"东/East"、"西/West"、"南/South"、"北/North"、"中 /Center"这种方位来标识的。因此,在组织界面时,除了要考虑所需的组件种类外,还需要考虑如何安排这些组件的位置与大小。这一般是通过设置布局管理器(Layout Manager)及其相关属性来实现的。事实上上述按方位来安排组件就是采用了Java中多种布局管理器里的BorderLayout布局管理器。
④处理事件
为了完成一个GUI应用程序所应具备的功能,除了适当地安排各种组件产生美观的界面外,还需要处理各种界面元素事件,以便真正实现与用户的交换,完成程序的功能。在Java程序中这一般是通过实现适当的事件监听者接口来完成的。比如如果需要响应按钮事件,就需要实现 ActionListener监听者接口;如果需要响应窗口事件,就需要实现WindowListener监听者接口。
import javaawt;
import javaawtevent;
import javautilRandom;
public class Window extends Frame{
Button button1 = new Button("开始");
Button button2 = new Button("结束");
TextField textfield = new TextField();
static Random random = new Random();
String string = null;
boolean bstart = false;
Thread thread;
public void launchFrame() {
thissetLocation(500, 200);
thissetLayout(new BorderLayout());
thisadd(button1, new BorderLayout()WEST);
thisadd(button2, new BorderLayout()EAST);
thisadd(textfield, new BorderLayout()NORTH);
button1addActionListener(new Button1Listener());
button2addActionListener(new Button2Listener());
thisaddWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
Systemexit(0);
}
});
pack();
setVisible(true);
}
private class Button1Listener implements ActionListener {
public void actionPerformed(ActionEvent e) {
bstart = true;
thread = new Thread(new NumProduce());
threadstart();
}
}
private class Button2Listener implements ActionListener {
public void actionPerformed(ActionEvent e) {
bstart = false;
}
}
private class NumProduce implements Runnable {
private void numproduce() {
string = IntegertoString(randomnextInt()); /nextint的括号中处可以修改产生随机数的范围/
textfieldsetText(string);
}
public void run() {
while(bstart) {
try {
numproduce();
Threadsleep(50);
} catch (InterruptedException e) {
eprintStackTrace();
}
}
}
}
public static void main(String[] args) {
new Window()launchFrame();
}
}
import javaawt;
import javaxswing;
public class file extends JFrame{
JButton jb; JFrame jf; JLabel jl1,jl2; JPanel jp1,jp2; JTextField jtf;
public file(){ //初始化 jb = new JButton("第一个按钮"); jl1 = new JLabel("第一个标签"); jl2 = new JLabel("你好,这是XXX的第一个java Swing程序"); jl2setFont(new Font("宋体",FontPLAIN,16));//设置字体样式 jp1 = new JPanel(); jp2 = new JPanel(); jtf = new JTextField(10); //添加组件 jp1add(jl1); jp1add(jtf); jp1add(jb); jp2add(jl2); //位置 thisadd(jp1,BorderLayoutNORTH); thisadd(jp2,BorderLayoutCENTER); //显示窗口 thissetTitle("XXX的第一个java Swing程序"); thissetDefaultCloseOperation(JFrameEXIT_ON_CLOSE); thissetSize(600,500); thissetVisible(true); } public static void main(String[] args) {
new file(); }}
很简单啊 给你现写的 运行一下看看和不合格
=====================第一个类=============================
/
实现了系统计算器连续按"="和按"+","-","","/"进行累记运算的模式
/
import javaxswing;
import javaawt;
import javaawtevent;
public class CalculatorFrame extends JFrame {
private JTextField txtDis = new JTextField("0", 16); //显示文本框
private JButton[] btnGrp = new JButton[17]; //17个按钮
private JPanel jpnMain = new JPanel(); //主面板
private JPanel jpnNorth = new JPanel(); //上面板
private JPanel jpnSouth = new JPanel(); //下面板
private double numSaved; //保存的前一个数
private String operator = ""; //保存的运算符号
private String lastPress = ""; //上一次按的按钮("数字","运算符" 或 "等号")
/构造函数/
public CalculatorFrame() {
//窗口设置
setTitle("计算器");
setSize(210, 250);
buttonInit(); //按钮初始化
//主面板设置
add(jpnMain);
jpnMainsetLayout(null);
jpnMainadd(jpnNorth);
jpnMainadd(jpnSouth);
jpnMainadd(btnGrp[15]);
btnGrp[15]setBounds(8, 180, 188, 30); //添加“=”按钮
//上面板设置
jpnNorthsetBounds(8, 10, 190, 30);
jpnNorthadd(txtDis);
txtDissetHorizontalAlignment(JTextFieldRIGHT); //设置文本右对齐
txtDissetEditable(false);
//下面板设置
jpnSouthsetBounds(8, 60, 190, 120);
jpnSouthsetLayout(new GridLayout(4, 4));
addSouthJpn(); //添加17个按钮
//添加监听器
addListener();
}
/17个按钮显示值初始化/
public void buttonInit() {
for (int i = 0; i < 10; i++) {
btnGrp[i] = new JButton("" + i);
}
btnGrp[10] = new JButton("");
btnGrp[11] = new JButton("+");
btnGrp[12] = new JButton("-");
btnGrp[13] = new JButton("");
btnGrp[14] = new JButton("/");
btnGrp[15] = new JButton("=");
btnGrp[16] = new JButton("C");
for (int i = 0; i < 17; i++) {
btnGrp[i]setFont(new Font("Dialog", FontPLAIN, 18));
}
}
/按网格顺序添加除“=”外16个按钮/
public void addSouthJpn() {
int[] index={7,8,9,14,4,5,6,13,1,2,3,12,0,16,10,11};
for(int i=0;i<indexlength;i++){
jpnSouthadd(btnGrp[index[i]]);
}
}
/给按钮添加监听器/
public void addListener() {
//给数字按钮添加监听器,btnGrp[10]是""号
for (int i = 0; i <= 10; i++) {
btnGrp[i]addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String button = ( (JButton) egetSource())getText();
//如果有运算 *** 作符或文本框数字为0并且按钮不为“。”
if (lastPress == "运算符" || lastPress == "等号"
|| txtDisgetText()equals("0") && button != "") {
txtDissetText(""); //清空文本框
}
if (lastPress == "等号") {
operator = ""; //上次按的是=号,这次按数字,清空运算符
}
if (button == "" && txtDisgetText()indexOf("") != -1) {
} //这次按的是文本框内已经包含这种情况什么都不做,防止重复
else {
txtDissetText(txtDisgetText() + button); //文本框添加内容
}
lastPress = "数字";
}
});
}
//给运算 *** 作符按钮添加监听器
for (int i = 11; i <= 14; i++) {
btnGrp[i]addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (operator != "" && lastPress == "数字") { //运算符不为空并且之前按的是数字
(btnGrp[15]getActionListeners())[0]actionPerformed(e); //手动调用=号的监听响应实现=号功能
}
numSaved = DoubleparseDouble(txtDisgetText()); //保存当前文本框的数字
operator = ( (JButton) egetSource())getText(); //保存运算 *** 作符
lastPress = "运算符"; //添加运算符标记,下次文本框清空
}
});
}
//给等号按钮添加监听器
btnGrp[15]addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
double numNow = DoubleparseDouble(txtDisgetText()); //当前文本框的数字
//运算符匹配 *** 作
if (operatorequals("+")) {
txtDissetText( (numSaved + numNow) + "");
}
else if (operatorequals("-")) {
if (lastPress == "等号") { //累记运算时的算法(一直按等号)
txtDissetText( (numNow - numSaved) + "");
}
else {
txtDissetText( (numSaved - numNow) + "");
}
}
else if (operatorequals("")) {
txtDissetText( (numSaved numNow) + "");
}
else if (operatorequals("/")) {
if (lastPress == "等号") { //累记运算时的算法(一直按等号)
txtDissetText( (numNow / numSaved) + "");
}
else {
txtDissetText( (numSaved / numNow) + "");
}
}
if (lastPress != "等号") { //是第一次,以后按累记运算
numSaved = numNow; //保存数改为后一个数
}
lastPress = "等号"; //添加运算符标记,下次文本框清空
}
});
//给复位符“C”按钮添加监听器
btnGrp[16]addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
txtDissetText("0");
numSaved = 0;
operator = "";
lastPress = "";
}
});
}
}
=====================第二个类=============================
import javaxswing;
public class Test {
public Test() {
CalculatorFrame calframe = new CalculatorFrame(); //新窗口
calframesetDefaultCloseOperation(JFrameEXIT_ON_CLOSE); //设置关闭
calframesetLocationRelativeTo(null); //窗口置中
calframesetVisible(true); //显示窗口
calframesetDefaultLookAndFeelDecorated(false); //使用windows视感
calframesetResizable(false); //窗口不可调大小
}
public static void main(String[] args) {
Test test = new Test();
}
}
我知道的就是第一,做出来的东西不好看,想要好看点要费更多功夫。第二,效率很低,一个button在内存中站很大地方,java还有自己的垃圾回收机制,程序会越跑越快慢。第三,市场占有太低,java的优点是跨平台,所以大多数人都把精力放在跨平台这个优点上,GUI多数都是在windows上运行,c++优势特大。
以上就是关于如何进行Java GUI图形用户界面编程全部的内容,包括:如何进行Java GUI图形用户界面编程、Java实现GUI编程基本方法都有那些、java中GUI的实现方式是等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)