Java Swing intro

简介: Java Swing intro 如果有Android app开发经验,快速上手Swing不是问题。UI方面有相似的地方。 简单的几行代码就能抛出一个框框,记录一下操作过程 1.先显示一个框框 EraseBlockGame类是主类,包含了main入口,继承自 JFrame public class EraseBlockGame extends JFrame{ .
+关注继续查看

Java Swing intro

如果有Android app开发经验,快速上手Swing不是问题。UI方面有相似的地方。
简单的几行代码就能抛出一个框框,记录一下操作过程

1.先显示一个框框

EraseBlockGame类是主类,包含了main入口,继承自 JFrame

public class EraseBlockGame extends JFrame{
......
    public EraseBlockGame(String GameTitle){  // 构造方法
        super(GameTitle);
        setSize(408, 640);
        setLocationRelativeTo(null);// place in the center of screen 
        ......
        setVisible(true);
    }
}

设置窗口大小,设置窗口在屏幕上的位置,窗口可见

    public static void main(String args[]){
        EraseBlockGame e = new EraseBlockGame("Erase Block Game");
    }

运行一下程序,弹出一个窗口;窗口名称为Erase Block Game

2.菜单栏

菜单栏有菜单按钮,以及菜单选项

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
  • JMenuBar 是整个菜单
  • JMenu 是菜单栏上的单个按钮
  • JMenuItem 点开单个餐单键,弹出的子选项item
public class EraseBlockGame extends JFrame{
    private static final long serialVersionUID = 1L;
    private JMenuBar menuBar = new JMenuBar();
    private JMenu mGame = new JMenu("Game");
    private JMenuItem miNewGame = new JMenuItem("New game");
    private JMenuItem miExit = new JMenuItem("Exit");
    ......
}

如果多几个选项,总是new似乎不大好,用简单工厂来代替new
定义JMenuFactory,里面有创建JMenu的方法

package com.rust.util;

import javax.swing.JMenu;

public class JMenuFactory {
    JMenu menu;
    public JMenuFactory(){
        
    }
    public JMenu createMenu(String title){
        JMenu menu = new JMenu(title);
        return menu;
    }
}

同样定义JMenuItemFactory

package com.rust.util;

import javax.swing.JMenuItem;

public class JMenuItemFactory {
    JMenuItem item;
    public JMenuItemFactory(){
        
    }
    public JMenuItem createMenuItem(String title){
        item = new JMenuItem(title);
        return item;
    }
}

原来的new就可以替换为

    private JMenu mGame;
    private JMenu mControl;
    private JMenu mInfo;
    private JMenuItem miNewGame;
    private JMenuItem miExit;
    ......
        mGame = menuFactory.createMenu("Game");
        mControl = menuFactory.createMenu("Control");
        mInfo = menuFactory.createMenu("Info");
        miNewGame = miFactory.createMenuItem("New game");
        miExit = miFactory.createMenuItem("Exit");

在构造函数中给菜单item添加ActionListener,和Android app的Button差不多

        miNewGame.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                
            }
        });
        miExit.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);
            }
        });
        
        mGame.add(miNewGame);//这里添加的顺序就是排列的顺序
        mGame.add(miExit);//往menu中添加子项

        menuBar.add(mGame);
        menuBar.add(mControl);//这里添加的顺序就是排列的顺序
        
        setJMenuBar(menuBar);

如此看来,Swing活在了Android中

3.放置按钮

此时界面上只有一些菜单按键,多摆几个按钮上去看看

定义一个控制面板类ControlBoard 继承自 JPanel

/**
 * 控制面板,提供很多快捷的控制功能
 * @author Rust Fisher
 */
public class ControlBoard extends JPanel{
    private JButton btnStart;
    private JButton btnStop;
    private JButton btnPause;
    private JButton btnReset;
    private JButton btnExit;
    /*定义一个按钮区域areaButton,用来存放btn*/
    private JPanel areaButton = new JPanel(new GridLayout(5, 1));
    
    private EraseBlockGame game;
    /*按钮区域的框框*/
    private Border border = new EtchedBorder(EtchedBorder.RAISED, Color.WHITE,Color.gray);
    
    public ControlBoard(final EraseBlockGame game){
        setLayout(new GridLayout(3,1,0,1));
        this.game = game;//用于控制
        
        btnStart = new JButton("Start");
        btnStart.setEnabled(true);
        btnStop = new JButton("Stop");
        btnStop.setEnabled(false);
        btnPause = new JButton("Pause");
        btnPause.setEnabled(false);
        btnReset = new JButton("Reset");
        btnReset.setEnabled(true);
        btnExit = new JButton("Exit");
        btnExit.setEnabled(true);
        
        areaButton.add(btnStart);
        areaButton.add(btnPause);
        areaButton.add(btnStop);
        areaButton.add(btnReset);
        areaButton.add(btnExit);
        
        areaButton.setBorder(border);
        
        add(areaButton);// 把按钮区添加到控制面板上
        btnStart.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // go go go
                
            }
        });
        btnExit.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                System.exit(0);//886
            }
        });
    }
......
}

在EraseBlockGame类里加载按钮区域

public class EraseBlockGame extends JFrame{
......
    private ControlBoard controlBoard;
    
    public EraseBlockGame(String title){
        ......
        Container container = getContentPane();
        controlBoard = new ControlBoard(this);
        container.add(controlBoard, BorderLayout.EAST);//添加控制面板
        ......
    }
}

于是按钮就被装到程序上了

其他的就先不纠结了,Swing了解个大概就好;可以多看看android开发

目录
相关文章
|
28天前
|
Java 关系型数据库 MySQL
【Java课程设计】基于Java Swing 的图书管理系统
本次课程设计基于教材《Java基础案例教程(第二版)》中的第十三章,对课程源码的整理和分享。整个课程设计,我整理了mysql数据库的两个版本:5.7和8.0,方便各位码友们的学习!
|
2月前
|
Java 容器
Java Swing中的按钮和事件
Java Swing中的按钮和事件
17 0
|
2月前
|
Java
【Java Swing】平面山脉实现
【Java Swing】平面山脉实现
25 1
【Java Swing】平面山脉实现
|
2月前
|
存储 Java 图形学
【Java Swing】重绘基本实现
【Java Swing】重绘基本实现
26 0
|
2月前
|
Java
【Java Swing】3D山脉模型实现
【Java Swing】3D山脉模型实现
45 1
|
2月前
|
算法 Java 数据库连接
JAVA的swing技术到底实用不实用?
JAVA的swing技术到底实用不实用? CSDN 转过来的,所以格式与内容有些许错误请见谅
|
3月前
|
Java
中南林业科技大学Java实验报告十一:Swing组件
中南林业科技大学Java实验报告十一:Swing组件
35 0
|
5月前
|
Java 关系型数据库 MySQL
Java swing+mysql实现公司员工工资管理系统课程设计
该项目功能相对完善,有管理员和普通用户两个角色,分别实现了一些列功能,数据库采用的是mysql,这个代码的复杂度非常适合Java初学者和学生用来参考学习,下面我们来看看如何把项目运行起来。
73 0
|
5月前
|
设计模式 SQL 前端开发
Java swing+MySQL实现的学生信息管理系统课程设计
这款Java swing实现的学生信息管理系统和jsp版本的功能很相似,简单的实现了班级信息的增删改查,学生信息的增删改查,数据库采用的是mysql,jdk版本不限,是Java学习者学习参考非常好的一个小项目,下面我们来看看如何运行。
117 0
|
5月前
|
前端开发 Java 关系型数据库
Java swing+MySQL实现仓库货物商品管理系统课程毕业设计
由Java swing实现的一款简单的仓库商品管理系统,数据库采用的是mysql,本系统实现了两个角色层面的功能,管理员可以管理用户、仓库、商品信息等。普通用户登录后可以查看商品、仓库信息及个人信息。系统功能比较简单,但是非常适合Java初学者和学生来学习参考,设计的层次采用mvc的思想,很清晰,是学习参考的好资料,下面我们来看看如何配置运行。
77 0
相关产品
云迁移中心
推荐文章
更多