如何进行Java GUI图形用户界面编程

如何进行Java GUI图形用户界面编程,第1张

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的实现方式是等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9770975.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存