一、JavaSwing界面设计参考教程

二、布局管理器

三、绝对布局

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField; public class GuiDemo { private JFrame f; // 窗体
private JTextField tf; // 文本框 private JButton btn1; // 按钮 1
private JButton btn2; // 按钮 2
private JButton btnAdd; // 按钮 加号 +
private JButton btnEqual; // 按钮 等于 =
private JButton btnClear; // 按钮 清除 StringBuffer sb; // 定义一个变量,存储文本框里面的数值
Integer number1; // 加数
Integer number2; // 被加数
Integer sum; // 和 boolean b; // 运算符是否被点击 // 构造方法
GuiDemo() {
// 初始化原始数据
initData();
// 控件初始化
initUI();
} private void initData() {
sb = new StringBuffer("");
number1 = 0;
number2 = 0;
sum = 0;
b = false;
} private void initUI() {
f = new JFrame("计算器");
f.setSize(400, 200); // 设置窗口的宽高
f.setLocation(100, 100); // 设置窗口的起始点
// f.setLayout(new FlowLayout()); // 会重新绘制大小
f.setResizable(false); // 设置窗口一旦创建好,不能在改变大小。
// f.setBackground(Color.BLUE);
// 关闭窗口的事件
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); // 让窗口可见 // 在窗口上面增加一个文本框
tf = new JTextField();
tf.setBounds(20, 50, 360, 33);
tf.setText("0");
tf.setHorizontalAlignment(JTextField.RIGHT);
tf.setBackground(Color.WHITE);
f.add(tf);
// tf 鼠标事件
tfMouseEvent(); // 在窗口上面添加按钮
btn1 = new JButton("1");
btn1.setBounds(20, 100, 50, 33);
f.add(btn1); btn2 = new JButton("2");
btn2.setBounds(btn1.getBounds().x + 70, 100, 50, 33);
f.add(btn2); btnAdd = new JButton("+");
btnAdd.setBounds(btn2.getBounds().x + 70, 100, 50, 33);
f.add(btnAdd); btnEqual = new JButton("=");
btnEqual.setBounds(btnAdd.getBounds().x + 70, 100, 50, 33);
f.add(btnEqual); btnClear = new JButton("C");
btnClear.setBounds(btnEqual.getBounds().x + 70, 100, 50, 33);
f.add(btnClear); // 按钮点击事件
btnEvent(); f.repaint();
}
private void tfMouseEvent() {
tf.addMouseListener(new MouseListener() { @Override
public void mouseReleased(MouseEvent e) {
// TODO 自动生成的方法存根
System.out.println("mouseReleased");
} @Override
public void mousePressed(MouseEvent e) {
// TODO 自动生成的方法存根
System.out.println("mousePressed");
} @Override
public void mouseExited(MouseEvent e) {
// TODO 自动生成的方法存根
System.out.println("mouseExited");
tf.setBackground(Color.white);
} @Override
public void mouseEntered(MouseEvent e) {
// TODO 自动生成的方法存根
System.out.println("mouseEntered");
tf.setBackground(Color.cyan);
} @Override
public void mouseClicked(MouseEvent e) {
// TODO 自动生成的方法存根
System.out.println("mouseClicked");
}
});
} private void btnEvent() {
btn1.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
if (b) {
sb = new StringBuffer("");
b = false;
}
sb.append(btn1.getText());
tf.setText(sb.toString());
}
}); btn2.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
if (b) {
sb = new StringBuffer("");
b = false;
}
sb.append(btn2.getText());
tf.setText(sb.toString());
}
});
btnAdd.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
b = true;
number1 += new Integer(tf.getText());
tf.setText(number1.toString());
}
});
btnEqual.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
b = false;
number2 = new Integer(tf.getText());
sum = number1 + number2;
tf.setText(sum.toString());
}
});
btnClear.addActionListener(new ActionListener() { @Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
initData();
tf.setText("0");
}
}); } public static void main(String[] args) {
// TODO 自动生成的方法存根
new GuiDemo();
} }

四、作业

自己做一个计算器,实现加减乘除四则运算。
如果想增加难度,可以让计算器实现不同进制之间的计算与转换。

java11 - GUI图形用户界面编程的更多相关文章

  1. java第八节 GUI/图形用户界面

    /* *第8讲 GUI/图形用户界面 * AWT的基础知识 * GUI全称是Graphical User Interface,即图形用户界面 * JDK中提供了AWT和Swing两个包,用于GUI程序 ...

  2. Java图形用户界面编程

    1.Java图形用户界面编程概述 JavaAPI中提供了两套组件用于支持编写图形用户界面:AWT(抽象窗口包)和Swing 2.  容器(Container):重量级容器和轻量级容器(一个容器可以放置 ...

  3. I/O系统,多线程、图形用户界面编程

    多线程 进程与线程区别: 进程需要分配独立的内存空间:线程在同一内存空间中工作,可以共享同一块内存和系统资源 与Java相关的API: 1)Thread类 方法:start()启动: urn() : ...

  4. 黑马程序员_<<GUI(图形用户界面)--------1>>

    --------------------ASP.Net+Android+IOS开发..Net培训.期待与您交流! -------------------- 1.  GUI图形用户界面 1.简述 Gra ...

  5. java之 22天 GUI 图形界面编程(一)

    转自:http://takeme.iteye.com/blog/1876850 GUI(图形用户界面) import java.awt.Button; import java.awt.FlowLayo ...

  6. GUI(图形用户界面)

    一.GUI(图形用户界面) GUI Graphical User Interface(图形用户接口) 用图形的方式,来显示计算机操作的界面,这样更方便更直观 CLI Command line User ...

  7. python学习笔记(十 一)、GUI图形用户界面

    python图形用户界面就是包含按钮.输入框.选择框等组件的窗口.主要依赖与工具包进行代码编写.python GUI工具包并发互斥的,你可以选择多个工具包进行安装,有极大选择空间.每个工具包都有不同用 ...

  8. GUI 图形用户界面 [学习笔记]

    今晚返璞归真了一把, 系统了解了一下GUI的有关知识: GUI(Graphical User Interface) 图形用户界面 是指采用图形方式显示的计算机操作用户接口.与早期计算机使用的命令行界面 ...

  9. linux系统中firewalld防火墙管理工具firewall-config(GUI图形用户界面)

    firewall-config是firewalld防火墙管理工具的GUI(图形用户界面)版本,几乎可以实现所有以命令行来执行的操作. firewall-config的界面如下图(在终端直接运行fire ...

随机推荐

  1. Arduino库函数中文说明

    #define 常量名 常量值 % 取模运算符 String abc  /  char abc[n]  定义字符串 pinMode(pin,mode);  用于引脚的初始化  mode包括 INPUT ...

  2. python_如何为元组中每个元素命名

    学生信息系统: (名字,年龄,性别,邮箱地址) 为了减少存储开支,每个学生的信息都以一个元组形式存放 如: ('tom', 18,'male','tom@qq.com' ) ('jom', 18,'m ...

  3. laravel5.5 when()的用法

    当你在使用where语句有前提条件时,比如某值为1的时候才执行where子句,否则不执行,这个时候,laravel5.5新出了一个简便方法when($arg,fun1[,fun2]). 具体用法如下: ...

  4. .net Core连接MongoDB

    前两天在学习MongoDB相关的知识,做了个小Demo,大概是省份里面有多少所学校 连接MongoDB首先要通过Nuget添加一个MongoDB的包,下载此包 安装完毕后开始写代码了,创建一个省份实体 ...

  5. sqlserver存储过程及mybatis调用——待续

    创建带输入参数存储过程 use yanantestgoif exists (select * from sys.objects where name='yanan')drop procedure ya ...

  6. web、pc、wap、app的区别

    通常情况下web=pc,wap=app,前者指电脑用的程序,后者指手机用的程序. 更深层的区别是,pc电脑上软件,web电脑上的网页,wap手机上的网页,app手机用软件

  7. 【转】 C++易混知识点4: 自己编写一个智能指针(Reference Counting)学习auto_ptr和reference counting

    这篇文章建大的介绍了如何编写一个智能指针. 介绍: 什么是智能指针?答案想必大家都知道,智能指针的目的就是更好的管理好内存和动态分配的资源,智能指针是一个智能的指针,顾名思义,他可以帮助我们管理内存. ...

  8. Percona监控MySQL模板详解

    InnoDB Adaptive Hash Index 显示了"自适应哈希索引"的使用情况,哈希索引只能用来搜索等值的查询. # Hash table size 17700827, ...

  9. 在windows环境下更改某软件的窗口位置

    #include<stdio.h>#include <stdlib.h>#include <Windows.h>#include <time.h> vo ...

  10. flex基本概念

    基本使用 任何一个容器都可以指定为flex布局 .box { display: flex; } 行内元素也可以使用flex .box { display: inline-flex; } Webkit内 ...