【Java-GUI】08 Swing02 边框和选择器
边框案例:
package cn.dzz.swing; import javax.swing.*;
import javax.swing.border.*;
import java.awt.*; public class Demo02 { JFrame jFrame = new JFrame("边框测试"); public void init() { // 修改为栅格布局
jFrame.setLayout(new GridLayout(2,4)); // 向单元格填充组件,设置边框和内容 // 1斜角边框
Border bevelBorder = BorderFactory.createBevelBorder(
BevelBorder.RAISED,
Color.RED,
Color.GREEN,
Color.BLUE,
Color.GRAY
);
JPanel bevelBorderJPanel = getJPanelWithBorder(bevelBorder, "BevelBorder"); // 2线条边框
Border lineBorder = BorderFactory.createLineBorder(
Color.ORANGE,
10
);
JPanel lineBorderJPanel = getJPanelWithBorder(lineBorder, "LineBorder"); // 3空边框
Border emptyBorder = BorderFactory.createEmptyBorder(10, 5, 20, 10);
JPanel emptyBorderJPanel = getJPanelWithBorder(emptyBorder, "EmptyBorder"); // 4蚀刻边框
Border etchedBorder = BorderFactory.createEtchedBorder(
EtchedBorder.RAISED,
Color.RED,
Color.GREEN
);
JPanel etchedBorderJPanel = getJPanelWithBorder(etchedBorder, "EtchedBorder"); // 5标题边框
TitledBorder titledBorder = new TitledBorder(new LineBorder(
Color.ORANGE,
10
),
"测试标题",
TitledBorder.LEFT,
TitledBorder.BOTTOM,
new Font("StSong", Font.BOLD, 18),
Color.BLUE
);
JPanel titleBorderJPanel = getJPanelWithBorder(titledBorder, "TitleBorder"); // 6哑光边框
MatteBorder matteBorder = new MatteBorder(10, 5, 20, 10, Color.GREEN);
JPanel matteBorderJPanel = getJPanelWithBorder(matteBorder, "MatteBorder"); // 7复合边框
// CompoundBorder compoundBorder = new CompoundBorder(titledBorder, new LineBorder(Color.RED, 10));
CompoundBorder compoundBorder = new CompoundBorder(new LineBorder(Color.RED, 10), titledBorder);
JPanel compoundBorderJPanel = getJPanelWithBorder(compoundBorder, "CompoundBorder"); // 组装
jFrame.add(bevelBorderJPanel);
jFrame.add(lineBorderJPanel);
jFrame.add(emptyBorderJPanel);
jFrame.add(etchedBorderJPanel);
jFrame.add(titleBorderJPanel);
jFrame.add(matteBorderJPanel);
jFrame.add(compoundBorderJPanel); // 设置窗口最佳大小 和 可见 可关闭
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.pack();
jFrame.setVisible(true);
} // 要设置8个面板对象,就要写8次,所以进行了一个封装处理
JPanel getJPanelWithBorder(Border border,String content) {
JPanel jPanel = new JPanel();
jPanel.add(new JLabel(content));
jPanel.setBorder(border);
return jPanel;
} public static void main(String[] args) {
new Demo02().init();
}
}
边框设置的参数种类很多

工具条案例JToolBar:
package cn.dzz.swing; import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent; public class Demo03 { JFrame jFrame = new JFrame("工具条演示案例");
JTextArea jTextArea = new JTextArea(6, 35);
JToolBar jToolBar = new JToolBar("PlayerToolBar", SwingConstants.HORIZONTAL); // 3个action对象
Action preAct = new AbstractAction(" 上一首") {
@Override
public void actionPerformed(ActionEvent e) {
jTextArea.append("上一曲\n");
}
}; Action pauseAct = new AbstractAction("⏸ 暂停") {
@Override
public void actionPerformed(ActionEvent e) {
jTextArea.append("暂停播放\n");
}
}; Action nextAct = new AbstractAction(" 下一首") {
@Override
public void actionPerformed(ActionEvent e) {
jTextArea.append("下一曲\n");
}
}; public void init() { // 直接组装
jToolBar.add(preAct);
jToolBar.addSeparator();
jToolBar.add(pauseAct);
jToolBar.addSeparator();
jToolBar.add(nextAct); jFrame.add(jToolBar,BorderLayout.NORTH);
jFrame.add(jTextArea,BorderLayout.CENTER); jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.pack();
jFrame.setVisible(true);
} public static void main(String[] args) {
new Demo03().init();
}
}

颜色选择和文件选择:
ColorChooser & FileChooser
package cn.dzz.swing; import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent; public class Demo04 { JFrame jFrame = new JFrame("颜色选择器");
JTextArea jTextArea = new JTextArea("我爱Java",6,30);
JButton changeBgColor = new JButton( new AbstractAction("更改编辑区背景色") {
@Override
public void actionPerformed(ActionEvent e) {
Color color = JColorChooser.showDialog(
jFrame, // 父级组件
"选择颜色", // 对话框标题
Color.WHITE // 初始颜色
);
jTextArea.setBackground(color);
}
}); public void init(){
jFrame.add(jTextArea, BorderLayout.CENTER);
jFrame.add(changeBgColor, BorderLayout.SOUTH);
jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.pack();
jFrame.setVisible(true);
} public static void main(String[] args) {
new Demo04().init();
}
}
效果显示

、

文件选择器:
package cn.dzz.swing; import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException; public class Demo05 { JFrame jFrame = new JFrame("文件选择器");
JMenuBar jMenuBar = new JMenuBar();
JMenu jMenu = new JMenu("文件"); BufferedImage buffImage;
// 画布渲染
class MyCanvas extends JPanel {
@Override
public void paint(Graphics graphics) { graphics.drawImage(buffImage, 0, 0, null);
}
}
MyCanvas myCanvas = new MyCanvas(); JMenuItem openMenuItem = new JMenuItem(new AbstractAction("选择文件") {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser jFileChooser = new JFileChooser(".");
jFileChooser.showOpenDialog(jFrame);
File selectedFile = jFileChooser.getSelectedFile(); try {
buffImage = ImageIO.read(selectedFile);
myCanvas.repaint();
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
}); JMenuItem saveMenuItem = new JMenuItem(new AbstractAction("另存为") {
@Override
public void actionPerformed(ActionEvent e) {
JFileChooser jFileChooser = new JFileChooser(".");
jFileChooser.showSaveDialog(jFrame);
File selectedFile = jFileChooser.getSelectedFile();
try {
ImageIO.write(buffImage, "jpg", selectedFile );
} catch (IOException ioException) {
ioException.printStackTrace();
}
}
}); void init() { // 按钮菜单组装
jMenu.add(openMenuItem);
jMenu.add(saveMenuItem);
jMenuBar.add(jMenu);
// 窗体组装
jFrame.setJMenuBar(jMenuBar);
myCanvas.setPreferredSize(new Dimension(740, 500));
jFrame.add(myCanvas); jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jFrame.pack();
jFrame.setVisible(true);
} public static void main(String[] args) {
new Demo05().init();
}
}
效果:

存在的一些BUG:如果图片不足画布大小,会将外层的图形写入其中,超过画布大小的,则不会缩放渲染
保存功能不可以自己获取文件后缀
【Java-GUI】08 Swing02 边框和选择器的更多相关文章
- java Gui编程 事件监听机制
1. GUI编程引言 以前的学习当中,我们都使用的是命令交互方式: 例如:在DOS命令行中通过javac java命令启动程序. 软件的交互的方式: 1. 命令交互方式 图书管理系统 ...
- JAVA GUI 工具
Java GUI图形界面开发工具 上大学那会儿比较主流的Java图形开发插件是:Visual Editor 和 SWT Designer, 不久又出了个Jigloo, 但去官网看了下发现这个东西也 ...
- Java GUI入门手册-AWT篇
Java GUI入门手册: AWT是基本的GUI设计工具,重点学习其中的布局格式以及事件监听事件. 首先创建一个窗口,我们先分析Frame类中的方法: 通过上图,可以看出frame是由构造方法的重载: ...
- JAVA GUI编程学习笔记目录
2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...
- JAVA GUI
JAVA GUI中的事件处理: 委托事件模型:事件源对象和监听器对象具有绑定关系 一个监听器可以绑定多个事件源 一个事件源也可以绑定多个监听器 监听器有各自监听的事件类型 设置容器的布局管 ...
- paip.java gui swt/jface 最佳实践
paip.java gui swt/jface 最佳实践 1. 工具:Eclipse +jigloo4 1 2. 安装插件: 1 1. IMPORT swt lib 2 2. 新建立窗体 2 3. 运 ...
- 写在学习Java GUI之前
Java GUI就是用Java语言开发桌面应用,而Java又有三个Java GUI库,分别为AWT,Swing和SWT/JFace. 现在要学的是Swing库. 后记:开发桌面应用,不止一种技术,现在 ...
- [置顶] java Gui 键盘监听事件
简单写一个java Gui键盘监听事件,实现的效果就是按下键盘控制台输出你按下的键.比如:按下A控制台就输出A 效果如图: 以下把实现的效果分为几个步骤: 1.新建一个窗体类继承窗体: 2.给这个窗体 ...
- java GUI (课堂笔记)
关于java GUI Swing组件: JFrame 窗口组件 JLabel 标签 JButton 按钮组件 JTextField 单行文本框 系统控件(JDK自带) 自定义控件(模仿系统控件): 继 ...
- IntelliJ IDE 开发Java GUI 入门
j主要对java 的GUI相关知识进行简单的介绍和总结,整个博客按照创建一个java GUI的顺序进行介绍,期间穿插讲解用到的java Swing的布局.控件等相关知识.本博客所进行的讲解及工程的创建 ...
随机推荐
- BLP 模型
公号:Rand_cs BLP 模型 本篇文章是调研了许多资料后对 BLP 模型的一个总结 MLS,Multi-level Security,主要关心的是数据机密性 D. Elliott Bell 和 ...
- 键盘中断,键盘驱动,基于Linux0.11
键盘,咱们做计算机这一行的自然不必多说,天天与它打交道.但熟归熟,清楚键盘背后的原理吗?键盘上都标有各键的名称,表明了各键所代表的意义,但是计算机是如何知道的?组合键是怎样实现的?按下一个代表字符的键 ...
- INFINI Labs 产品更新 | Agent 全新重构,优化指标采集,支持集中配置管理,支持动态下发等功能
INFINI Labs 产品又更新啦~ 本次更新主要有 Agent.Console.Loadgen 等产品,其中 Agent 进行全新重构升级,新版限制了 CPU 资源消耗,优化了内存,相比旧版内存使 ...
- INFINI Labs 产品更新 | Easysearch 新增 kNN 搜索功能、Console 支持 LDAP 认证登录等
INFINI Labs 产品又更新啦~,包括 Easysearch v1.3.0.Gateway v1.16.0.Console v1.4.0.Agent v0.5.1.本次产品更新了许多实用新特性, ...
- xxlJob端口号及故障转移设置,解决负载均衡调度任务执行
xxlJob端口号及故障转移设置,解决负载均衡调度任务执行 my.xxljob.executorPort = 1162 my.xxljob.executorAppName = myService-jo ...
- Windows CSC提权漏洞复现(CVE-2024-26229)
漏洞信息 Windows CSC服务特权提升漏洞. 当程序向缓冲区写入的数据超出其处理能力时,就会发生基于堆的缓冲区溢出,从而导致多余的数据溢出到相邻的内存区域.这种溢出会损坏内存,并可能使攻击者能够 ...
- parsel的使用
介绍 parsel这个库可以解析HTML和XML,并支持使用XPath和CSS选择器对内容进行提取和修改,同时还融合了正则表达式的提取功能.parsel灵活强大,同时也是Python最流行的爬虫框架的 ...
- R 语言入门学习笔记:软件安装踩坑记录——删除所有包以及彻底解决库包被安装到 C 盘用户目录下的问题,以及一些其他需要注意的点
目录 R 语言入门学习笔记:软件安装踩坑记录--删除所有包以及彻底解决库包被安装到 C 盘用户目录下的问题,以及一些其他需要注意的点 软件版本及环境 遇到的问题描述 问题的分析和探究 最终的解决方案 ...
- 13-nginx
关于nginx nginx是提供http服务的中间件. 这里推荐学习nginx的博客:朱双印的博客 安装 nginx的版本 主线版本(Mainline version) #最新版,不稳定 稳定版本(S ...
- 06-Linux用户和组管理
关于用户和组的知识 家目录 用户都有家目录:root用户家目录为/root.其他用户的家目录在/home/,如user1的家目录为/home/user1 当我们创建用户时,系统就会自动创建该用户的家目 ...