目录

上:Java程序设计复习提纲(上:入门语法) - 孤飞 - 博客园 (cnblogs.com)

  • 基本语法与编译运行

  • 数据类型和关键字

  • 常用语法

  • 数组与字符串

  • 异常处理


中:Java程序设计复习提纲(中:面向对象) - 孤飞 - 博客园 (cnblogs.com)

  • 面向对象和类

下:本文

  • 图形界面

GUI概述

Java图形用户界面(GUI)设计主要是使用Swing和JavaFX这两个库。Swing是早期Java版本中使用的主要库,而JavaFX是后来引入的,提供了更多的功能和更好的性能。

以下是关于Java GUI设计的一些基本知识:

  1. 组件(Components):组件是GUI设计的基本元素,比如按钮、文本框、标签、复选框、下拉列表等。每一个组件都有很多属性可以设置,例如大小、位置、颜色等。

  2. 容器(Containers):容器是用来包含其他组件或容器的组件。例如,面板(Panel)和框架(Frame)就是两种常用的容器。容器也可以设置布局管理器(Layout Manager),用来控制其包含的组件如何排列。

  3. 事件处理(Event Handling):用户与GUI程序的交互主要通过事件(Event)来进行。例如,点击按钮、输入文本、选中复选框等操作都会产生事件。程序需要提供事件处理器(Event Handler)来响应这些事件。

  4. 绘图和动画:Java GUI程序可以使用2D绘图API来绘制各种图形(例如线、形状、文本等),并可以使用动画API来创建动画效果。

以下是一个简单的使用Swing库创建GUI的例子:

import javax.swing.JFrame;
import javax.swing.JButton; public class SimpleGUI {
public static void main(String[] args) {
// Create a new frame (a window)
JFrame frame = new JFrame("My First GUI");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200); // Create a new button
JButton button = new JButton("Click me!"); // Add the button to the frame
frame.getContentPane().add(button); // Make the frame visible
frame.setVisible(true);
}
}

在这个例子中,我们创建了一个新的窗口,然后在窗口中添加了一个按钮。当运行这个程序时,你将会看到一个窗口,窗口中有一个可以点击的按钮。

容器

在Java GUI编程中,容器(Container)是一个可以包含其他组件(如按钮、标签、文本框等)和其他容器的组件。以下是Java中主要的容器类:

  1. JFrame:这是一个顶层容器,通常作为应用程序的主窗口。一个JFrame对象有标题栏、最小化/最大化/关闭按钮、状态栏等。它可以包含其他容器和组件。默认情况下,关闭JFrame窗口不会终止程序,需要通过调用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)方法设置当关闭窗口时终止程序。
JFrame frame = new JFrame("Title");  // create a new frame with the title "Title"
  1. JPanel:JPanel是一种通用的轻量级容器,可以用于组织其他组件和容器。通常,你会在一个JFrame窗口中添加一个或多个JPanel,然后在JPanel中添加按钮、标签等组件。
JPanel panel = new JPanel();         // create a new panel
  1. JDialog:JDialog是一种顶层容器,通常用于创建弹出窗口。一个JDialog可以是模态的(当打开JDialog时,用户不能与其他窗口交互)或非模态的。
JDialog dialog = new JDialog(frame, "Dialog", true); // create a new modal dialog with the title "Dialog"
  1. JScrollPane:JScrollPane是一种特殊的容器,可以为其包含的组件提供滚动条。当组件的大小超过JScrollPane的大小时,滚动条会自动出现。
JScrollPane scrollPane = new JScrollPane(textArea);  // create a new scroll pane that contains a text area

容器的布局可以通过布局管理器(Layout Manager)来管理。布局管理器可以控制容器中的组件如何排列和调整大小。Java提供了几种内置的布局管理器,如FlowLayout、BorderLayout、GridLayout、BoxLayout等。

添加组件到容器通常通过调用容器的add方法实现。例如,frame.add(button)将一个按钮添加到一个框架中。

组件

在Java图形用户界面(GUI)编程中,组件(Component)是构成用户界面的基本元素,例如按钮、文本框、标签、菜单、滑块等。下面列出了一些常见的Java GUI组件:

  1. JButton:按钮组件,常用于触发某种行为或命令。
JButton button = new JButton("Click me!");
  1. JLabel:标签组件,用于显示文本或图像。
JLabel label = new JLabel("Hello, World!");
  1. JTextField:文本字段组件,用于输入和编辑单行文本。
JTextField textField = new JTextField(20); // 20 columns wide
  1. JTextArea:文本区域组件,用于输入和编辑多行文本。
JTextArea textArea = new JTextArea(5, 20); // 5 rows and 20 columns
  1. JCheckBox:复选框组件,允许用户选择多个选项。
JCheckBox checkBox = new JCheckBox("Check me");
  1. JRadioButton:单选按钮组件,允许用户从多个选项中选择一个。
JRadioButton radioButton = new JRadioButton("Select me");
  1. JComboBox:下拉列表框组件,允许用户从下拉列表中选择一个选项。
String[] choices = {"Choice 1", "Choice 2", "Choice 3"};
JComboBox comboBox = new JComboBox(choices);
  1. JSlider:滑块组件,允许用户通过拖动滑块选择一个值。
JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 50, 25); // min: 0, max: 50, initial: 25
  1. JMenu, JMenuItem, JMenuBar:菜单组件,用于创建菜单栏和菜单项。
JMenuBar menuBar = new JMenuBar();
JMenu menu = new JMenu("Menu");
JMenuItem menuItem = new JMenuItem("Menu Item");
menu.add(menuItem);
menuBar.add(menu);

所有的这些组件都是从javax.swing.JComponent类继承的,这意味着他们都有一些公共的属性和方法,例如背景色、前景色、字体、工具提示文本等。另外,这些组件都可以注册事件监听器,以响应用户的输入(如点击、键入等)。

布局

在Java GUI编程中,布局管理器(Layout Manager)决定了容器中的组件如何定位和调整大小。以下是Java中常见的布局管理器:

  1. FlowLayout:这是默认的布局管理器,将组件从左到右、从上到下排列,类似于英文文本的阅读顺序。
FlowLayout flowLayout = new FlowLayout();
container.setLayout(flowLayout);
  1. BorderLayout:将容器分为5个区域:North(上)、South(下)、East(右)、West(左)和Center(中)。
BorderLayout borderLayout = new BorderLayout();
container.setLayout(borderLayout);
  1. GridLayout:将容器分为等大小的网格(行和列),每个组件填充一个网格单元。
GridLayout gridLayout = new GridLayout(3, 2); // 3 rows and 2 columns
container.setLayout(gridLayout);
  1. BoxLayout:将组件沿一个方向(水平或垂直)排列。
BoxLayout boxLayout = new BoxLayout(container, BoxLayout.X_AXIS); // horizontal layout
container.setLayout(boxLayout);
  1. GridBagLayout:这是最灵活的布局管理器,允许组件跨多个行和列,并可以指定组件的填充和间距。但是,这也是最复杂的布局管理器。
GridBagLayout gridBagLayout = new GridBagLayout();
container.setLayout(gridBagLayout);

每个容器都有一个默认的布局管理器,例如JFrame和JDialog默认使用BorderLayout,而JPanel和JApplet默认使用FlowLayout。你可以通过调用容器的setLayout方法更改布局管理器。

布局管理器不是必需的。你可以通过将容器的布局管理器设置为null,然后手动指定每个组件的大小和位置来进行绝对定位。但是这种方法通常不推荐,因为它不能适应窗口大小的变化和不同平台的显示差异。

事件监听与处理

在Java GUI编程中,事件监听和处理是非常重要的概念。事件是用户与应用程序交互的方式,例如点击按钮、键入文本、移动鼠标等。事件监听器(Event Listener)是一个接口,包含了响应特定事件的方法。当事件发生时,事件源(Event Source,如按钮或文本框)会调用监听器的方法。

以下是Java中常见的事件和对应的监听器:

  1. ActionEvent:当用户对具有动作的对象(如按钮或菜单项)进行操作时,就会发生此事件。对应的监听器是ActionListener
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// handle the button click
}
});
  1. MouseEvent:当用户对鼠标进行操作(如点击、移动或拖动)时,就会发生此事件。对应的监听器是MouseListenerMouseMotionListener
button.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
// handle the mouse click
}
});
  1. KeyEvent:当用户对键盘进行操作(如按键或释放键)时,就会发生此事件。对应的监听器是KeyListener
textField.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
// handle the key press
}
});
  1. ItemEvent:当用户对可选项目(如复选框或列表)进行操作时,就会发生此事件。对应的监听器是ItemListener
checkBox.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
// handle the item state change
}
});
  1. WindowEvent:当用户对窗口进行操作(如打开、关闭或最大化)时,就会发生此事件。对应的监听器是WindowListener
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
// handle the window closing
}
});

注意:MouseAdapterKeyAdapterWindowAdapterMouseListenerKeyListenerWindowListener的适配器类。适配器类是空实现了监听器接口的类,这样你可以只覆盖你感兴趣的方法,而不是所有的方法。例如,如果你只关心鼠标点击,那么你可以只覆盖mouseClicked方法,而不需要覆盖mouseEnteredmouseExitedmousePressedmouseReleased方法。

处理事件的代码通常会改变应用程序的状态或进行某种操作。例如,当用户点击按钮时,你可能会保存数据、打开新窗口或显示消息等。

例子

我们使用上面提到的容器、组件、布局和事件监听处理来实现一个简易加减法计算器

效果:

程序代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; public class Calculator {
public static void main(String[] args) {
// 创建一个新的JFrame实例作为主窗口
JFrame frame = new JFrame("Simple Calculator"); // 创建一个新的JPanel实例作为主面板
JPanel panel = new JPanel(); // 设置主面板的布局为GridLayout
panel.setLayout(new GridLayout(2, 3, 10, 10)); // 创建组件
JTextField textField1 = new JTextField(10);
textField1.setFont(new Font("Arial", Font.PLAIN, 20));
JTextField textField2 = new JTextField(10);
textField2.setFont(new Font("Arial", Font.PLAIN, 20));
JButton addButton = new JButton("+");
addButton.setFont(new Font("Arial", Font.PLAIN, 30));
JButton subtractButton = new JButton("-");
subtractButton.setFont(new Font("Arial", Font.PLAIN, 30));
JTextField resultField = new JTextField(10);
resultField.setFont(new Font("Arial", Font.PLAIN, 20));
resultField.setEditable(false); // 添加组件到主面板
panel.add(textField1);
panel.add(textField2);
panel.add(resultField);
panel.add(addButton);
panel.add(subtractButton); // 添加事件监听器到加号按钮
addButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
int num1 = Integer.parseInt(textField1.getText());
int num2 = Integer.parseInt(textField2.getText());
int sum = num1 + num2;
resultField.setText(Integer.toString(sum));
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(frame, "Invalid input. Please enter only integers.");
textField1.setText("");
textField2.setText("");
}
}
}); // 添加事件监听器到减号按钮
subtractButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
int num1 = Integer.parseInt(textField1.getText());
int num2 = Integer.parseInt(textField2.getText());
int diff = num1 - num2;
resultField.setText(Integer.toString(diff));
} catch (NumberFormatException ex) {
JOptionPane.showMessageDialog(frame, "Invalid input. Please enter only integers.");
textField1.setText("");
textField2.setText("");
}
}
}); // 将主面板添加到主窗口
frame.add(panel); // 设置主窗口的大小、位置和关闭操作
frame.setSize(600, 200);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 显示主窗口
frame.setVisible(true);
}
}

Java程序设计复习提纲(下:图形界面)的更多相关文章

  1. 南邮JAVA程序设计实验1 综合图形界面程序设计

    南邮JAVA程序设计实验1  综合图形界面程序设计 实验目的: 学习和理解JAVA SWING中的容器,部件,布局管理器和部件事件处理方法.通过编写和调试程序,掌握JAVA图形界面程序设计的基本方法. ...

  2. AWT是Java最早出现的图形界面,但很快就被Swing所取代。

    Module  11 Swing AWT是Java最早出现的图形界面,但很快就被Swing所取代. Swing才是一种真正的图形开发. AWT在不同平台所出现的界面可能有所不同:因为每个OS都有自己的 ...

  3. AWT是Java最早出现的图形界面,但很快就被Swing所取代

    AWT是Java最早出现的图形界面,但很快就被Swing所取代. Swing才是一种真正的图形开发. AWT在不同平台所出现的界面可能有所不同:因为每个OS都有自己的UI组件库,java调用不同系统的 ...

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

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

  5. Java第一次写的流布局图形界面,留个纪念

    package jisuanqi; import java.awt.*; public class MyFrame extends Frame{ //继承Frame类 public MyFrame() ...

  6. centos7下图形界面和命令行界面切换

    在图形界面使用 ctrl+alt+F2切换到dos界面 dos界面 ctrl+alt+F2切换回图形界面 在命令上 输入 init 3 命令 切换到dos界面 输入 init 5命令 切换到图形界面 ...

  7. CentOS下图形界面安装_Orcaale 11g

    1.安装说明 使用到的工具: 软件名称 版本 软件包 系统 centOS6.8 CentOS-6.8-x86_64-bin-DVD1.iso 数据库 ORACLE11g linux.x64_11gR2 ...

  8. Java语言程序设计复习提纲

     这是我在准备Java考试时整理的提纲,如果是通过搜索引擎搜索到这篇博客的师弟师妹,建议还是先参照PPT和课本,这个大纲也不是很准确,自己总结会更有收获,多去理解含义,不要死记硬背,否则遇到概念辨析题 ...

  9. Java 期末复习提纲

    Java 开发环境 Java 的特点 面向对象.跨平台.能把中小型程序写成大型程序 开发 Java 的流程 设计类 写代码 重构 Java 程序规范 Javadoc 风格注释 接口以 able 结尾 ...

  10. JAVA EXAM2 复习提纲

    [真假分数相加] //inheritence, extends, use this & super 子类的方法 //two constructors, non-default use 'thi ...

随机推荐

  1. springboot脱包部署

    <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactI ...

  2. 初识C 语言

    程序语言 C语言是目前极为流行的一种计算机程序设计语言,它既具有高级语言的功能,又具有汇编语言的一些特性.支持ANSIC. C语言的特点:通用性及易写易读 是一种结构化程序设计语言   具有良好的可移 ...

  3. 声网Agora 教育 aPaaS 灵动课堂升级:UI与业务逻辑分离,界面、功能自定义更灵活

    声网Agora 教育 aPaaS 产品灵动课堂现已升级至 v1.1.0 版本.声网Agora 灵动课堂可以帮助教育机构和开发者最快 15 分钟上线自有品牌.全功能的在线互动教学平台,节省 90% 开发 ...

  4. graphviz 简单入门

    上一位负责画图的选手 CS Academy 由于不明原因暂时不能继续工作,所以本俱乐部招收了新选手 graphviz. 在 Linux 上,你可以这么下载: sudo apt install grap ...

  5. 如何通过Java更改Word中的页面大小和页面方向

    新建的 Word 文档,默认纸张为 A4 纸,大小为 21 厘米 × 29.7 厘米,没特殊要求的文档用 A4 纸即可,但有时文档中的内容比较宽,需要用比 A4 纸更宽的纸张,例如制作一些宽的表格,就 ...

  6. MybatisPlus------代码生成器

    快速开发: 代码生成器: (1)模版:MyBatisPlus提供 (2)数据库相关配置:读取数据库获取信息 (3)开发者自定义配置:手工配置 package com.ithema; import co ...

  7. C#多线程开发-了解C#5.0 05

    前面一篇文章,了解了任务并行库.这是异步编程基础设施,它允许我们以模块化的方式设计程序,来组合不同的异步操作.解决了以往线程之间传递消息难等问题,但是我们在阅读和编写此类程序时还是会觉得非常难理解程序 ...

  8. 搞一个自己用的node-cli

    我们都用过 vue 的cli ,或者 react的cli,  亦或是其他的cli 如 vite 等.他们都是提供了一个全局命令,然后在终端执行这个全局命令就可以创建出模板项目.今天我们就自己做一个,给 ...

  9. flutter系列之:在flutter中使用媒体播放器

    目录 简介 使用前的准备工作 在flutter中使用video_player 总结 简介 现在的app功能越来越强大,除了基本的图文之外,还需要各种各样的其他的功能,比如视频,和直播. 直播可能会比较 ...

  10. XXL-Job与Elastic-Job详细对比

    1. 失败处理策略 失败处理策略 XXL-Job Elastic-Job 失败重试 支持,最多重试三次.重试时间间隔可配置. 支持,最多重试十次.重试时间间隔可配置. 失败告警 支持,可配置告警接收人 ...