Java Swing框架介绍

Swing 是一个为Java设计的GUI工具包。(PC的一个UI库)

  • Swing是JAVA基础类的一部分。

  • Swing包括了图形用户界面(GUI)器件如:文本框,按钮,分隔窗格和表。

  • Swing提供许多比AWT更好的屏幕显示元素。它们用纯Java写成,所以同Java本身一样可以跨平台运行,这一点不像AWT。它们是JFC的一部分。它们支持可更换的面板和主题(各种操作系统默认的特有主题),然而不是真的使用原生平台提供的设备,而是仅仅在表面上模仿它们。这意味着你可以在任意平台上使用JAVA支持的任意面板。轻量级组件的缺点则是执行速度较慢,优点就是可以在所有平台上采用统一的行为。

实际用法

简单的就是控件的调用,上代码

/** To change this license header, choose License Headers in Project Properties.* To change this template file, choose Tools | Templates* and open the template in the editor.*/
package com.mycompany.dangeranimal.resource;
import java.util.List;
/*****/
public class danger {public static void main(String[] args) {ColorTableCellRenderer ct = new ColorTableCellRenderer();CsvManager  csv = new CsvManager();List<String> country_List = csv.ReadCsv();//读取CSV,获取国家名称List<String> num_List = csv.ReadCsvGetNums();//读取CSV,获取数量名称System.out.println("国家名列表:");//f//or(int j = 0 ; j < country_List.size();j++)//{System.out.println(country_List);//DrawPicture dp = new DrawPicture();//绘制图像dp.initWindow(country_List,num_List);}
}
/** To change this license header, choose License Headers in Project Properties.* To change this template file, choose Tools | Templates* and open the template in the editor.*/
package com.mycompany.dangeranimal.resource;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.*;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JScrollPane;
import javax.swing.BorderFactory;
import java.util.List;
import javax.swing.table.DefaultTableModel;
import java.util.Vector;
import java.net.URL;
import javax.swing.*;
import javax.swing.table.*;
/**** @author */
public class DrawPicture {//JF窗体设置JFrame jf = new JFrame(); //设置全局变JTable table = new JTable();JPanel jp = new JPanel();/*创建初始化显示界面*/public void initWindow(List<String> country_list,List<String> num_list){//设置窗体大小以及初始化尺寸,标题jf.setLayout(new BorderLayout(10,5)); //默认为0,0;水平间距10,垂直间距5jf.setMinimumSize(new Dimension(500,700)); //设置最小大小jf.setMaximumSize(new Dimension(1500,1600)); //设置窗体最大大小jf.setTitle("Elephas maximus In Asia");    //设置显示窗口标题jf.setSize(850,700);    //设置窗口显示尺寸jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);    //置窗口是否可以关;//add titleLabel jl = new Label("Elephas maximus In Asia",Label.CENTER);jf.add(jl,BorderLayout.NORTH);//重新添加标题置顶//设置表格相关信息table = new JTable(7,6);//创建表格:参数:设置行列数Vector vData = new Vector();Vector vName = new Vector();vName.add("column1");vName.add("column2");vName.add("column3");vName.add("column4");vName.add("column5");vName.add("column6");//add data to tablefor(int i = 0; i <country_list.size();i++){Vector vRow = new Vector();vRow.add(" "+country_list.get(i));ImageIcon elephant_icon = new ImageIcon("resource/elephant.png");//projects根目录下ImageIcon empty_icon = new ImageIcon("resource/demo.jpeg");//String转int 获取需要表示的数量String cur_val =num_list.get(i);int i_val = Integer.parseInt( cur_val); int number = i_val/250;int rest_num = 5-number;for(int j = 0; j < number; j++){vRow.add(elephant_icon);//添加图标}for(int k = 0; k < rest_num ; k++){vRow.add(empty_icon);//添加图标}vData.add(vRow.clone());}DefaultTableModel model = new DefaultTableModel(vData, vName);table.setModel(model);table.setBorder(BorderFactory.createLineBorder(Color.BLACK,1));//设置边框颜色table.setEnabled(false); //set not edittabletable.setShowHorizontalLines(true);table.setShowVerticalLines(true);table.setGridColor(Color.BLACK);//设置网格线颜色table.setRowHeight(80);//设置行宽table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);table.getColumnModel().getColumn(0).setPreferredWidth(170);table.getColumnModel().getColumn(1).setPreferredWidth(170);table.getColumnModel().getColumn(2).setPreferredWidth(170);table.getColumnModel().getColumn(3).setPreferredWidth(170);table.getColumnModel().getColumn(4).setPreferredWidth(170);table.getColumnModel().getColumn(5).setPreferredWidth(170);table.getColumnModel().getColumn(1).setCellRenderer(new ImageRender());table.getColumnModel().getColumn(2).setCellRenderer(new ImageRender());table.getColumnModel().getColumn(3).setCellRenderer(new ImageRender());table.getColumnModel().getColumn(4).setCellRenderer(new ImageRender());table.getColumnModel().getColumn(5).setCellRenderer(new ImageRender());table.setBackground(Color.YELLOW);jf.add(table,BorderLayout.CENTER);//重新添加标题置顶JLabel bottom_label = new JLabel("KEY");JLabel description_label = new JLabel(" = 250 numbers");JLabel  l=new JLabel();ImageIcon ji = new ImageIcon("resource/elephant.png");l.setIcon(ji);l.setBounds(10, 10, ji.getIconWidth(),ji.getIconHeight());jp.add(bottom_label);jp.add(l,new Integer(Integer.MIN_VALUE));jp.add(description_label);jp.setBackground(Color.YELLOW);jf.add(jp,BorderLayout.SOUTH);jf.getContentPane().setBackground(Color.YELLOW);jf.setVisible(true);    //设置窗口是否可见}
}//渲染前端
class ColorTableCellRenderer extends DefaultTableCellRenderer
{DefaultTableCellRenderer renderer=new DefaultTableCellRenderer();//该类继承与JLabel,Graphics用于绘制单元格,绘制红线public void paintComponent(Graphics g){super.paintComponent(g);Graphics2D g2=(Graphics2D)g;final BasicStroke stroke=new BasicStroke(2.0f);g2.setColor(Color.RED);g2.setStroke(stroke);g2.drawLine(0,getHeight()/2,getWidth(),getHeight()/2);}
}
/** To change this license header, choose License Headers in Project Properties.* To change this template file, choose Tools | Templates* and open the template in the editor.*/
package com.mycompany.dangeranimal.resource;import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Image;
import java.io.File;
import java.io.IOException;import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;/*** 重载TableCellRenderer的方法:使得Table可以添加图片* @author */
public class ImageRender implements TableCellRenderer{@SuppressWarnings("unchecked")@Overridepublic Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int rowIndex, int columnIndex) {if( value instanceof Image ){JLabel jLabel = new JLabel();jLabel.setLayout(new BorderLayout());//设置布局jLabel.setIcon(new ImageIcon((Image)value));//给jlable设置图片return jLabel;}else if( value instanceof File ) {try {return new JLabel(new ImageIcon(ImageIO.read((File)value)));} catch(IOException ex) {throw new RuntimeException(ex.getMessage(), ex);}}else {String val = String.valueOf(value);try {return new JLabel(new ImageIcon(ImageIO.read(new File(val))));} catch(IOException ex) {throw new RuntimeException(ex.getMessage(), ex);}}}
}
/** To change this license header, choose License Headers in Project Properties.* To change this template file, choose Tools | Templates* and open the template in the editor.*/
package com.mycompany.dangeranimal.resource;
import java.util.List;
/*****/
public class danger {public static void main(String[] args) {ColorTableCellRenderer ct = new ColorTableCellRenderer();CsvManager  csv = new CsvManager();List<String> country_List = csv.ReadCsv();//读取CSV,获取国家名称List<String> num_List = csv.ReadCsvGetNums();//读取CSV,获取数量名称System.out.println("国家名列表:");//f//or(int j = 0 ; j < country_List.size();j++)//{System.out.println(country_List);//DrawPicture dp = new DrawPicture();//绘制图像dp.initWindow(country_List,num_List);}
}

运行结果:

Java Swing框架实战相关推荐

  1. JAVA Swing——框架(JFrame、JDialog)位置居于父窗口中央的解决方案

    解决方案 1.实时获取父窗口坐标的方法是给父窗口添加如下监听 addComponentListener(new ComponentAdapter() {@Overridepublic void com ...

  2. java ee核心框架实战 pdf_Java EE核心框架实战 高洪岩 中文PDF

    资源名称:Java EE核心框架实战 高洪岩 中文PDF 第1章 MyBatis 3操作数据库 第2章 MyBatis 3常用技能 第3章 Struts 2必备开发技能 第4章 Struts 2文件的 ...

  3. 《Java EE核心框架实战》—— 2.3 resultMap 标签

    本节书摘来异步社区<Java EE核心框架实战>一书中的第2章,第2.3节,作者: 高洪岩,更多章节内容可以访问云栖社区"异步社区"公众号查看. 2.3 < re ...

  4. Java并发编程实战————Executor框架与任务执行

    引言 本篇博客介绍通过"执行任务"的机制来设计应用程序时需要掌握的一些知识.所有的内容均提炼自<Java并发编程实战>中第六章的内容. 大多数并发应用程序都是围绕&qu ...

  5. 视频教程-Apache Shiro权限框架实战+项目案例视频课程-Java

    Apache Shiro权限框架实战+项目案例视频课程 拥有10余年项目实战经验. 2006-2011在nttdata从事对日软件开发类工作. 2011-2015在HP从事技术服务工作. 擅长于j2e ...

  6. Java 中的 Swing 框架现在是不是被淘汰了?

    关于java中的Swing框架,我先说下如下的观点. 1 只要是用java开发的商业项目,就指着来挣钱的项目,都不会用Swing框架. 2 所以对java初学者来说,根本没必要学swing,甚至连类似 ...

  7. Java定时任务调度实战(2)Quart框架的简单介绍

    一.前言 在之前的文章<Java定时任务调度(1)TimerTask原理与实战>中已经介绍了一种实现定时任务调度的方法--Java原生提供的 TimerTask,这个工具适用于一些简单的业 ...

  8. 微信小程序项目实战+JAVA SSM框架后台管理系统

    毕业设计做的是一个阅读微信小程序+后台管理系统 ,最后被评为优秀毕业设计,在此将项目源码及设计思路进行分享(文末含源码下载地址). 效果图如下: 一.系统开发环境 (1)Windows10操作系统 ( ...

  9. 客户端是选择Java Swing还是C# Winform

    登录 | 注册 mentat的专栏 目录视图 摘要视图 订阅 [专家问答]韦玮:Python基础编程实战专题     [知识库]Swift资源大集合     [公告]博客新皮肤上线啦     快来领福 ...

最新文章

  1. Eslint报错整理与解决方法(持续整理)
  2. 10 Redis 主从复制
  3. Hadoop Yarn公平调度器的特点、缺额、DRF策略
  4. 三十三、Scrapy中的强大媒体管道ImagesPipeline
  5. webpack — 概述介绍
  6. sql 两个表列包含_Oracle数据库扩展语言PL/SQL之运算符
  7. 排序算法:堆排序算法实现及分析
  8. 深入理解SpringBoot(4)——web开发
  9. centos7 安装java 8_CentOS 7.8下安装完美安装配置Rosetta
  10. Odoo10参考系列--QWeb报表
  11. python编程手机模拟点击_python模拟点击玩游戏的实例讲解
  12. java daemon 线程_【转】关于Java的Daemon线程的理解
  13. E: List directory /var/lib/apt/lists/partial is missing. - Acquire (13: Permission denied)
  14. 安卓简单的通用文本编辑器介绍
  15. OpenAI发布DALL·E 2
  16. V10抢单系统源码(新增连单管理功能)
  17. matlab 傅立叶变换去噪
  18. css设置背景图片模糊,内容不模糊
  19. mysql 大数据量查询总数 方式比较
  20. python 手机自动化交易股票_通达信转python,机智股票自动交易手机版

热门文章

  1. Flink从入门到入土
  2. RocketMQ入门到入土(六)发消息的时候选择queue的算法有哪些?
  3. javascript 内置对象学习 笔记:
  4. ArrayList 去重
  5. 【2019.09.14】2019icpc沈阳网络赛
  6. HandlerAdapter解析参数过程之HandlerMethodArgumentResolver
  7. 操作系统-单处理器调度
  8. html2canvas 截屏 兼容手机端
  9. Qt中文本编辑器实现语法高亮功能(Qscitinlla)
  10. C++读写注册表的问题