java_day23~24
Java基础
GUI编程
核心技术:Swing、AWT
现在GUI并不流行 因为其界面不美观、需要依赖jre环境
Swing
public class Demo1 {
//init();初始化
public void init() {
//最大窗口
JFrame jf = new JFrame("jframe窗口");
jf.setVisible(true);
jf.setSize(500,600);
//设置文字jlable
JLabel jLabel = new JLabel("欢迎来到java世界");
jf.add(jLabel);
jLabel.setHorizontalAlignment(SwingConstants.CENTER);
//获取一个容器
Container contentPane = jf.getContentPane();
contentPane.setBackground(Color.cyan);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new Demo1().init();
}
}
弹窗
public class Demo2 {
public void init(){
JFrame jf = new JFrame();
jf.setVisible(true);
jf.setSize(600,800);
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
Container cp = jf.getContentPane();
cp.setLayout(null);//绝对布局
JButton jBut = new JButton("点我");
jBut.setBounds(20,20,200,100);
jBut.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new MyDialog();
}
});
cp.add(jBut);//将按钮放进容器中
}
public static void main(String[] args) {
new Demo2().init();
}
}
//弹窗窗口
class MyDialog extends JDialog{
public MyDialog() {
setVisible(true);
setBounds(100,100,200,200);
Container contentPane = getContentPane();
contentPane.setLayout(null);
JLabel label = new JLabel("我来带你飞");
label.setBounds(50,50,100,100);
contentPane.add(label);
}
}
Icon 图标
public class Demo3 extends JFrame implements Icon {
private int width;
private int height;
public Demo3() {
}
public Demo3(int width, int height) {
this.width = width;
this.height = height;
}
public void init() {
Demo3 d = new Demo3(15,15);
JLabel icon = new JLabel("icon", d, SwingConstants.CENTER);
Container contentPane = getContentPane();
contentPane.add(icon);
setVisible(true);
setSize(200,200);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public void setIcon() {
JLabel icon2 = new JLabel("image",SwingConstants.CENTER);
URL url = this.getClass().getResource("ico.png");
ImageIcon imageIcon = new ImageIcon(url);
icon2.setIcon(imageIcon);
Container contentPane = getContentPane();
contentPane.add(icon2);
setVisible(true);
setSize(200,200);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
// new Demo3().init();
new Demo3().setIcon();
}
@Override
public void paintIcon(Component c, Graphics g, int x, int y) {
g.fillOval(x,y,width,height);
}
@Override
public int getIconWidth() {
return width;
}
@Override
public int getIconHeight() {
return height;
}
}
面板
public class Demo4 extends JFrame {
public Demo4() {
Container contentPane = getContentPane();
contentPane.setLayout(new GridLayout(2,1,10,10));
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(1,3));
contentPane.add(panel);
panel.add(new JButton("1"));
panel.add(new JButton("2"));
panel.add(new JButton("3"));
contentPane.add(panel);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(300,400);
}
public static void main(String[] args) {
new Demo4();
}
}
public class Demo5 extends JFrame {
public Demo5(){
Container contentPane = getContentPane();
JTextArea jTextArea = new JTextArea(20, 50);
Scanner scanner = new Scanner(System.in);
String str= scanner.toString();
jTextArea.setText(str);
JScrollPane jScrollPane = new JScrollPane(jTextArea);
contentPane.add(jScrollPane);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(500,400);
}
public static void main(String[] args) {
new Demo5();
}
}
单选、多选
public class Demo6 extends JFrame {
public Demo6(){
// Container container = getContentPane();
//
// URL url = Demo6.class.getResource("ico.png");
// ImageIcon icon = new ImageIcon(url);
//
// JButton jButton = new JButton();
// jButton.setSize(55,55);
// jButton.setIcon(icon);
// jButton.setToolTipText("我是提示");
//
// container.add(jButton);
//
// setVisible(true);
// setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// setSize(400,500);
}
public void init(){
Container container = getContentPane();
URL url = Demo6.class.getResource("ico.png");
ImageIcon icon = new ImageIcon(url);
//单选框
JRadioButton jRadioButton1 = new JRadioButton("jRadioButton1");
JRadioButton jRadioButton2 = new JRadioButton("jRadioButton2");
JRadioButton jRadioButton3 = new JRadioButton("jRadioButton3");
//分组 将按钮放入组内 一个组只能选择一个
ButtonGroup group = new ButtonGroup();
group.add(jRadioButton1);
group.add(jRadioButton2);
group.add(jRadioButton3);
container.add(jRadioButton1,BorderLayout.SOUTH);
container.add(jRadioButton2,BorderLayout.CENTER);
container.add(jRadioButton3,BorderLayout.NORTH);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(400,500);
}
public void init2(){
Container container = getContentPane();
URL url = Demo6.class.getResource("ico.png");
ImageIcon icon = new ImageIcon(url);
//多选
JCheckBox checkBox1 = new JCheckBox("checkBox1");
JCheckBox checkBox2 = new JCheckBox("checkBox1");
JCheckBox checkBox3 = new JCheckBox("checkBox1");
container.add(checkBox1,BorderLayout.NORTH);
container.add(checkBox2,BorderLayout.CENTER);
container.add(checkBox3,BorderLayout.SOUTH);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(400,500);
}
public static void main(String[] args) {
new Demo6().init2();
}
}
下拉、列表
public class Demo7 extends JFrame {
public Demo7() {
}
public void init() {
Container container = getContentPane();
//下拉框
JComboBox<Object> box = new JComboBox<>();
box.addItem("黑");
box.addItem("白");
box.addItem("黄");
box.addItem("红");
container.add(box);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(400,500);
}
public void init2() {
Container container = getContentPane();
String[] strings = {"1","2","3","4"}; //固定添加
//列表框
Vector objs = new Vector();
objs.add(1);
objs.add("2");
objs.add("DNF");
objs.add(234);
JList jList = new JList(objs);
container.add(jList);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(400,500);
}
public static void main(String[] args) {
new Demo7().init2();
}
}
文本框
public class Demo8 extends JFrame {
public void init1(){
Container container = getContentPane();
//文本框
JTextField textField1 = new JTextField("nihao");
TextField tf = new TextField();
JTextField textField2 = new JTextField("java");
tf.setEchoChar('*');//伪密码框效果
JPasswordField passwordField = new JPasswordField();
passwordField.setEchoChar('*');//密码显示样式更改
container.add(textField1,BorderLayout.SOUTH);
container.add(textField2,BorderLayout.NORTH);
container.add(passwordField,BorderLayout.CENTER);
container.add(tf,BorderLayout.WEST);
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setSize(400,500);
}
public static void main(String[] args) {
new Demo8().init1();
}
}
贪吃蛇小游戏
/**
* 游戏面板
*/
public class GamePanel extends JPanel implements KeyListener, ActionListener {
//定义的数据结构
int length;
int[] snakeX = new int[600];//x坐标
int[] snakeY = new int[500];//y坐标
String drec;//初始方向
//食物的坐标
int foodX;
int foodY;
Random random = new Random();
int score;//成绩
boolean isStart = false;//游戏开始状态
boolean isFail = false;//游戏失败状态
Timer timer = new Timer(100,this);//100毫秒执行一次
public GamePanel(){
init();
setFocusable(true);//获取焦点和键盘事件
addKeyListener(this);
timer.start();
}
//初始化
public void init(){
//蛇的初始长度
length = 3;
//头的位置
snakeX[0] = 100;
snakeY[0] = 100;
//身体的位置
snakeX[1] = 75;
snakeY[1] = 100;
//尾巴的位置
snakeX[2] = 50;
snakeY[2] = 100;
drec = "right";
score=0;
//食物初始随机位置
foodX = 25+25*random.nextInt(34);
foodY = 75+25*random.nextInt(24);
}
//绘制游戏面板
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);//清屏幕
this.setBackground(Color.BLACK);
Date.header.paintIcon(this,g,25,11);//头部广告栏
g.fillRect(25,75,850,600);//默认游戏界面
//画小蛇
if (drec.equals("right")) {
Date.right.paintIcon(this,g,snakeX[0],snakeY[0]);
} else if (drec.equals("left")){
Date.left.paintIcon(this,g,snakeX[0],snakeY[0]);
} else if (drec.equals("up")) {
Date.up.paintIcon(this,g,snakeX[0],snakeY[0]);
} else if (drec.equals("down")) {
Date.down.paintIcon(this,g,snakeX[0],snakeY[0]);
}
//游戏开始状态
if (isStart==false) {
g.setColor(Color.white);
g.setFont(new Font("微软雅黑",Font.BOLD,40));//设置字体
g.drawString("按下空格开始游戏",300,300);//添加文字
}
//游戏失败状态
if (isFail==true){
g.setColor(Color.RED);
g.setFont(new Font("微软雅黑",Font.BOLD,40));//设置字体
g.drawString("游戏失败,按下空格重新开始",300,300);//添加文字
}
//画上身体
for (int i = 1;i<length;i++) {
Date.body.paintIcon(this,g,snakeX[i],snakeY[i]);//身体
}
//画上食物
Date.food.paintIcon(this,g,foodX,foodY);
//画上积分
g.setColor(Color.white);
g.setFont(new Font("微软雅黑",Font.BOLD,20));//设置字体
g.drawString("分数 "+score,750,30);//添加文字
g.drawString("长度 "+length,750,50);//添加文字
}
@Override
public void keyTyped(KeyEvent e) {
}
//键盘监听事件
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if (keyCode == KeyEvent.VK_SPACE){
if (isFail){
isFail = false;
init();
} else {
isStart = !isStart;//取反
}
repaint();
}
if (keyCode == KeyEvent.VK_UP){
drec = "up";
} else if (keyCode == KeyEvent.VK_DOWN) {
drec = "down";
} else if (keyCode == KeyEvent.VK_LEFT) {
drec = "left";
} else if (keyCode == KeyEvent.VK_RIGHT) {
drec = "right";
}
}
@Override
public void keyReleased(KeyEvent e) {
}
//事件监听--通过固定事件来刷新
@Override
public void actionPerformed(ActionEvent e) {
if (isStart && isFail == false){
//移动
for (int i = length-1;i>0;i--){
snakeX[i] = snakeX[i-1]; //向前移动一节
snakeY[i] = snakeY[i-1];
}
if (drec.equals("right")){
snakeX[0] = snakeX[0]+25;
if (snakeX[0]>850){ //撞到边界就回来
snakeX[0]=25;
}
} else if (drec.equals("left")) {
snakeX[0] = snakeX[0]-25;
if (snakeX[0]<25){ //撞到边界就回来
snakeX[0]=850;
}
} else if (drec.equals("up")) {
snakeY[0] -=25;
if (snakeY[0]<75){ //撞到边界就回来
snakeY[0]=650;
}
} else if (drec.equals("down")) {
snakeY[0] += 25;
if (snakeY[0]>650){ //撞到边界就回来
snakeY[0]=75;
}
}
//失败判定
for (int i = 1;i<length;i++){
if (snakeX[0]==snakeX[i]&&snakeY[0]==snakeY[i]){
isFail = true;
}
}
//吃食物
if (snakeX[0]==foodX && snakeY[0]==foodY){
length++;//长度+1
score++; //分数+1
//再次随机生成食物
foodX = 25+25*random.nextInt(34);
foodY = 75+25*random.nextInt(24);
}
repaint();//重画
}
timer.start();
}
}
/**
* 数据层
*/
public class Data {
public static URL headerUrl = Data.class.getResource("images/header.png");
public static ImageIcon header = new ImageIcon(headerUrl);
public static URL upUrl = Data.class.getResource("images/up.png");
public static ImageIcon up = new ImageIcon(upUrl);
public static URL downUrl = Data.class.getResource("images/down.png");
public static ImageIcon down = new ImageIcon(downUrl);
public static URL leftUrl = Data.class.getResource("images/left.png");
public static ImageIcon left = new ImageIcon(leftUrl);
public static URL rightUrl = Data.class.getResource("images/right.png");
public static ImageIcon right = new ImageIcon(rightUrl);
public static URL bodyUrl = Data.class.getResource("images/body.png");
public static ImageIcon body = new ImageIcon(bodyUrl);
public static URL foodUrl = Data.class.getResource("images/food.png");
public static ImageIcon food = new ImageIcon(foodUrl);
}
//main方法
public class StartGame {
public static void main(String[] args) {
JFrame jFrame = new JFrame();
jFrame.add(new GamePanel(),BorderLayout.CENTER);
jFrame.setBounds(10,10,900,720);
jFrame.setResizable(false);//窗口大小不可变
jFrame.setVisible(true);
jFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
图片素材链接:https://pan.baidu.com/s/1b8vL6AJqlmROFe_kB7oohw
提取码:f7yt
java_day23~24的更多相关文章
- Fedora 24中的日志管理
Introduction Log files are files that contain messages about the system, including the kernel, servi ...
- CSharpGL(24)用ComputeShader实现一个简单的图像边缘检测功能
CSharpGL(24)用ComputeShader实现一个简单的图像边缘检测功能 效果图 这是红宝书里的例子,在这个例子中,下述功能全部登场,因此这个例子可作为使用Compute Shader的典型 ...
- 【趣味分享】C#实现回味童年的24点算法游戏
一.24点游戏玩法规则效果展示 1.初始化界面 2.开始游戏界面 3.游戏超时界面 4.查看答案界面 5.答对界面 6.答错界面 7.计算表达式的验证界面 8.一副牌算完开始新一副牌界面 到这里24点 ...
- C#开发微信门户及应用(24)-微信小店货架信息管理
在前面微信小店系列篇<C#开发微信门户及应用(22)-微信小店的开发和使用>里面介绍了一些微信小店的基础知识,以及<C#开发微信门户及应用(23)-微信小店商品管理接口的封装和测试& ...
- [MySQL Reference Manual] 24 MySQL sys框架
24 MySQL sys框架 24 MySQL sys框架 24.1 sys框架的前提条件 24.2 使用sys框架 24.3 sys框架进度报告 24.4 sys框架的对象 24.4.1所有sys下 ...
- mysql 5.6.24安装实例
安装前准备工作: 1)编辑PATH路径 vim /etc/profile PATH=/home/mysql/bin:/home/mysql/lib:$PATH export PATH 2)生效PATH ...
- C语言-纸牌计算24点小游戏
C语言实现纸牌计算24点小游戏 利用系统时间设定随机种子生成4个随机数,并对4个数字之间的运算次序以及运算符号进行枚举,从而计算判断是否能得出24,以达到程序目的.程序主要功能已完成,目前还有部分细节 ...
- .NET开发人员必看:提高ASP.NET Web应用性能的24种方法和技巧
那性能问题到底该如何解决?以下是应用系统发布前,作为 .NET 开发人员需要检查的点. 1.debug=「false」 当创建 ASP.NET Web应用程序,默认设置为「true」.开发过程中,设置 ...
- [.net 面向对象程序设计进阶] (24) 团队开发利器(三)使用SVN多分支并行开发(下)
[.net 面向对象程序设计进阶] (24) 团队开发利器(三)使用SVN多分支并行开发(下) 本篇导读: 接上篇继续介绍SVN的高级功能,即使用分支并行开发.随着需求的不断变更,新功能的增加.特别是 ...
- 1Z0-053 争议题目解析24
1Z0-053 争议题目解析24 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 24.Which of the following information will be gath ...
随机推荐
- 整合mybatis-示例
引入依赖 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.o ...
- 关于 verilator 中 config.vlt 等配置文件的使用
参考网页:https://verilator.org/guide/latest/exe_verilator.html#configuration-files 注意,在使用 config.vlt 配置文 ...
- 方法综合练习:out、params、ref
using System; namespace ConsoleApp1 { class Program { /// <summary> /// 求两个参数之间的最大值 /// </s ...
- 杭电oj 数值统计
Problem Description 统计给定的n个数中,负数.零和正数的个数. Input 输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然 ...
- Godot从编辑器创建自定义场景类型对象
Godot的编辑器提供了强大的所见即所得功能,并且,我们可以在不从源码编译的情况下,为编辑器提供新的节点类型. 首先,我们创建一个新场景,然后添加一个Node2D,然后为当前节点(Node2D)添加一 ...
- java websocket详细
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring- ...
- flutter-linux(未完成)
运行命令 flutter run -d linux --no-sound-null-safety 打包(build/linux/x64/release/bundle/) flutter build l ...
- Storm日志预警以及汇总解决方案
目前在storm代码层面,捕获到的异常无法第一时间告知到开发人员,只有到最后引起显而易见的状况才会再去反查work所在服务器的日志进行问题分析,这样对后续优化代码和异常处理很不利. 但是也可以通过以下 ...
- maven 依赖包冲突解决
maven 查看依赖树结构命令mvn dependency:tree 1.出现下面这样冲突 omitted for duplicate 因重复而省略 2.解决-- 那个项目有问题,先注释掉,在重新一 ...
- c语言实现单链表的倒叙
bool upsidedown_list(LinkList L) { Lnode *head, *tmp, *oldhead; head = L; tmp = L->next; oldhead ...