记录java桌面程序swing布局的痛心
最近需要做一些桌面程序,因为我比较擅长的语言是java,php;只能选择java来做,于是先仿照一些桌面程序来布局练下手,下面就是代码记录了,讲真过程有点痛苦,一度的想换javafx,但是群里朋友说,javafx是属于oracle jre协议里面的,要小心使用,于是选择了免费并且没有后顾之忧的swing。
算了直接上代码了,里面的就是简单的布局和调整,使用了swing的美化包substance.jar。
Login.java
package com.qianku.project;import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.EmptyBorder;public class Login extends JFrame{public JFrame frame;// 得到显示器屏幕的宽高public int width = Toolkit.getDefaultToolkit().getScreenSize().width;public int height = Toolkit.getDefaultToolkit().getScreenSize().height;// 定义窗体的宽高public int windowsWedth = 662;public int windowsHeight = 442;private void initialize() {frame = this;frame.setLayout(new BorderLayout(2,2));JPanel topPanel = new TopPanel("image/logintitle_bg.png");topPanel.setBackground(Color.red);JPanel leftPanel = new JPanel();leftPanel.setBackground(Color.white);JPanel rightPanel = new JPanel();rightPanel.setBackground(Color.white);rightPanel.setLayout(null);frame.add("North", topPanel); //将按钮添加到窗口中frame.add("East", rightPanel);frame.add("Center",leftPanel);JLabel label = new JLabel();ImageIcon icon = new ImageIcon("image/login_banner.png");label.setIcon(icon);leftPanel.add(label);JLabel label01 = new JLabel("帐号登录");label01.setBounds(50, 20, 200, 20);JTextField name = new JTextField();name.setBounds(50, 100, 200, 20);name.setColumns(20);JTextField pass = new JTextField();pass.setBounds(50, 130, 200, 20);pass.setColumns(20);//登陆按钮JButton loginBtn = new JButton("登录");loginBtn.setBounds(50, 160, 200, 40);rightPanel.add(label01);rightPanel.add(name);rightPanel.add(pass);rightPanel.add(loginBtn);topPanel.setPreferredSize(new Dimension(0, 80));rightPanel.setPreferredSize(new Dimension(300, 0));frame.setBounds((width - windowsWedth) / 2,(height - windowsHeight) / 2, windowsWedth, windowsHeight);//设置去掉边框 //frame.setUndecorated(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);loginBtn.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new MainFrame().initialize();}});}public static void main(String[] args) {EventQueue.invokeLater(new Runnable() {@Overridepublic void run() {JFrame.setDefaultLookAndFeelDecorated(true);JDialog.setDefaultLookAndFeelDecorated(true);try {/** 想要修改皮肤的话,只需要更改,下面这个函数的参数,具体改成什么样,可以打开,Referenced Libraries -> 点击substance.jar -> 找到org.jvnet.substance.skin这个包 -> 将下面的SubstanceDustCoffeeLookAndFeel 替换成 刚刚打开的包下的任意一个“Substance....LookAndFeel”即可*/UIManager.setLookAndFeel(new org.jvnet.substance.skin.SubstanceBusinessLookAndFeel());} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}Login login = new Login();login.initialize();}});}}class TopPanel extends JPanel
{private ImageIcon pic; private Image image; private int width; private int height; public TopPanel(String imgUrl) { pic = new ImageIcon(imgUrl); image = pic.getImage(); width = pic.getIconWidth(); height = pic.getIconHeight(); this.setSize(width, height); } @Override public void paint(Graphics arg0) { super.paint(arg0); arg0.drawImage(image, 0, 0, width, height,null); } //获取作为背景图片的宽度 public int getdefaultWidth(){ return width; } //获取作为背景图片的高度 public int getdefaultHeight(){ return height; }
}
MainFrame.java
package com.qianku.project;import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Toolkit;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class MainFrame extends JFrame{public JFrame frame;public int width = Toolkit.getDefaultToolkit().getScreenSize().width;public int height = Toolkit.getDefaultToolkit().getScreenSize().height;public int windowsWedth = 1080;public int windowsHeight = 668;public void initialize(){frame = this;frame.setLayout(new BorderLayout(2,2));JPanel topPanel = new JPanel();topPanel.setBackground(Color.red);JPanel bottomPanel = new JPanel();bottomPanel.setBackground(Color.green);bottomPanel.setLayout(new BorderLayout(2,2));JPanel leftPanel = new MainLeftPanel();JPanel rightPanel = new MainRightPanel();bottomPanel.add("West", leftPanel);bottomPanel.add("Center", rightPanel);frame.add("North", topPanel); frame.add("Center",bottomPanel);topPanel.setPreferredSize(new Dimension(0, 80));frame.setBounds((width - windowsWedth) / 2,(height - windowsHeight) / 2, windowsWedth, windowsHeight);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}public static void main(String[] args) {new MainFrame().initialize();}}
MainLeftPanel.java
package com.qianku.project;import java.awt.Color;
import java.awt.Dimension;import javax.swing.JPanel;public class MainLeftPanel extends JPanel{public MainLeftPanel(){this.setBackground(Color.yellow);this.setPreferredSize(new Dimension(150, 0));}}
MainRightPanel.java:
package com.qianku.project;import java.awt.Color;import javax.swing.JPanel;public class MainRightPanel extends JPanel{public MainRightPanel(){this.setBackground(Color.pink);}
}
swing写桌面程序,很难受。附上源码下载链接 : https://download.csdn.net/download/gaoxuaiguoyi/10425601
记录java桌面程序swing布局的痛心相关推荐
- Java桌面程序开发——如何开发美观漂亮好看的桌面程序
大家想到使用Java这门编程语言大多是脑海中是浮现的B/S开发,高并发.云计算.大数据等等,今天给大家带来的是Java不一样的使用方式--使用Java做PC桌面程序开发. 不同的是,之前Java是使用 ...
- 【转】Java桌面程序开发——如何开发美观漂亮好看的桌面程序
大家想到使用Java这门编程语言大多是脑海中是浮现的B/S开发,高并发.云计算.大数据等等,今天给大家带来的是Java不一样的使用方式--使用Java做PC桌面程序开发. 不同的是,之前Java是使用 ...
- python桌面程序打开慢_转 : 终于搞清楚了为什么Java桌面程序总是感觉慢的原因...
终于搞清楚了为什么Java桌面程序总是感觉慢的原因! 按照道理服务器和浏览器都在用脚本和虚拟机,那些不慢,而Java的桌面程序总是感觉响应迟钝呢?主要有两个原因,一是服务器和浏览器都是异步的,提交到渲 ...
- java桌面宠物swing实现
java桌面宠物swing实现 在bilibili上看到一个少前小人的桌面程序 但他是Python写的. 于是就打算自己写一个java的 csdn上也有不少的桌面宠物程序,也给我提供了很好的参考 利用 ...
- 结合BeautyEye开源UI框架实现的较美观的Java桌面程序
BeautyJavaSwingRobot 结合BeautyEye开源UI框架实现的较美观的Java桌面程序,主要功能就是图灵机器人和一个2345网站万年历的抓取.... 挺简单而且实用的一个项目,实现 ...
- 使用exe4j打包Java桌面程序为exe
开发中大家可能也会遇到过将Java(swing)桌面程序打包成exe可执行文件的需求 最近做了两套桌面程序,给需要的小伙伴分享一下步骤吧! 目录 1. 使用Eclipse将项目打成Jar包 2. 使用 ...
- java桌面程序打包教程
首先打包成j可执行的jar文件. . 接下来找到自己生成jar文件的路径就可以看到jar文件了,我的是在桌面: 在桌面新建一个文件夹(名字随便取,一般去项目名字) 上面是我取的文件夹名字,然后把资料文 ...
- Java桌面程序打包成exe可执行文件
前言: 我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同.其实将java程序打包成exe也需要这个可执行jar文件. 准备: ecl ...
- Ubuntu 9.04下让Swing和Swt编写的Java桌面程序运行
本文以Ubuntu 9.04为例 前提:先安装带jre的jdk(下面链接中的文中介绍) http://www.kklinux.com/html/Love-Linux/Ubuntu/200908/05- ...
最新文章
- Hibernate二级缓存的使用
- PooledDirectByteBuf源码分析
- redis一般缓存什么样数据_SpringBoot+Redis轻松实现数据缓存
- 联想ghost重装系统_联想怎么安装ghostwin7系统的教程
- 更小的模型,迈向更快更环保的NLP
- 计算机网络bd,第七周-计算机网络技术
- JS调试设置断点却无法中断的解决
- Handler机制原理图、源码、使用!!!!!
- Android学习笔记五:基本视图组件:Button
- Python3网络爬虫开发实战(第二版)
- 会议OA之会议排座送审
- 云时代的阡陌纵横”的数据网络?
- 非链特异性转录组测序
- 图解三次握手与四次挥手
- python 计算TIFF图像相关性 根据相关性筛选特征 使用PCA提取主要特征
- 【Python大作业】耦合网络信息传播
- 计算机组成-无符号数乘法
- Ubuntu1604报错统一解决方法E: 无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂时不可用)
- 飞机订票系统c语言大作业,C语言知识学习飞机订票系统
- 汉克时代 签2份合同_在动荡的时代找到一份工作
热门文章
- 计算机网络——运输层(来看看,你不会后悔的)
- cleanmymac要不要下载装机?好不好用
- java如何获取单框的值_javaWeb获取文本框的值
- bootstrapmodel确认操作框_bootstrap模态框 确认框/提示框 的常用实现
- Redis的Windows安装和简单使用
- 精灵学院 - 经典口袋宝贝战斗手游 技术支持
- 华为eNSP配置生成树STP协议
- Python实训 姓名大作战进阶版(封装,继承)
- 数据科学、管理科学系课程教学课件——FineReport实验指导书节选====金融经管类专业
- 从Sliverlight Alpha(May2007)到Sliverlight Alpha Refresh之间变化