最近需要做一些桌面程序,因为我比较擅长的语言是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布局的痛心相关推荐

  1. Java桌面程序开发——如何开发美观漂亮好看的桌面程序

    大家想到使用Java这门编程语言大多是脑海中是浮现的B/S开发,高并发.云计算.大数据等等,今天给大家带来的是Java不一样的使用方式--使用Java做PC桌面程序开发. 不同的是,之前Java是使用 ...

  2. 【转】Java桌面程序开发——如何开发美观漂亮好看的桌面程序

    大家想到使用Java这门编程语言大多是脑海中是浮现的B/S开发,高并发.云计算.大数据等等,今天给大家带来的是Java不一样的使用方式--使用Java做PC桌面程序开发. 不同的是,之前Java是使用 ...

  3. python桌面程序打开慢_转 : 终于搞清楚了为什么Java桌面程序总是感觉慢的原因...

    终于搞清楚了为什么Java桌面程序总是感觉慢的原因! 按照道理服务器和浏览器都在用脚本和虚拟机,那些不慢,而Java的桌面程序总是感觉响应迟钝呢?主要有两个原因,一是服务器和浏览器都是异步的,提交到渲 ...

  4. java桌面宠物swing实现

    java桌面宠物swing实现 在bilibili上看到一个少前小人的桌面程序 但他是Python写的. 于是就打算自己写一个java的 csdn上也有不少的桌面宠物程序,也给我提供了很好的参考 利用 ...

  5. 结合BeautyEye开源UI框架实现的较美观的Java桌面程序

    BeautyJavaSwingRobot 结合BeautyEye开源UI框架实现的较美观的Java桌面程序,主要功能就是图灵机器人和一个2345网站万年历的抓取.... 挺简单而且实用的一个项目,实现 ...

  6. 使用exe4j打包Java桌面程序为exe

    开发中大家可能也会遇到过将Java(swing)桌面程序打包成exe可执行文件的需求 最近做了两套桌面程序,给需要的小伙伴分享一下步骤吧! 目录 1. 使用Eclipse将项目打成Jar包 2. 使用 ...

  7. java桌面程序打包教程

    首先打包成j可执行的jar文件. . 接下来找到自己生成jar文件的路径就可以看到jar文件了,我的是在桌面: 在桌面新建一个文件夹(名字随便取,一般去项目名字) 上面是我取的文件夹名字,然后把资料文 ...

  8. Java桌面程序打包成exe可执行文件

    前言: 我们都知道Java可以将二进制程序打包成可执行jar文件,双击这个jar和双击exe效果是一样一样的,但感觉还是不同.其实将java程序打包成exe也需要这个可执行jar文件. 准备: ecl ...

  9. Ubuntu 9.04下让Swing和Swt编写的Java桌面程序运行

    本文以Ubuntu 9.04为例 前提:先安装带jre的jdk(下面链接中的文中介绍) http://www.kklinux.com/html/Love-Linux/Ubuntu/200908/05- ...

最新文章

  1. Hibernate二级缓存的使用
  2. PooledDirectByteBuf源码分析
  3. redis一般缓存什么样数据_SpringBoot+Redis轻松实现数据缓存
  4. 联想ghost重装系统_联想怎么安装ghostwin7系统的教程
  5. 更小的模型,迈向更快更环保的NLP
  6. 计算机网络bd,第七周-计算机网络技术
  7. JS调试设置断点却无法中断的解决
  8. Handler机制原理图、源码、使用!!!!!
  9. Android学习笔记五:基本视图组件:Button
  10. Python3网络爬虫开发实战(第二版)
  11. 会议OA之会议排座送审
  12. 云时代的阡陌纵横”的数据网络?
  13. 非链特异性转录组测序
  14. 图解三次握手与四次挥手
  15. python 计算TIFF图像相关性 根据相关性筛选特征 使用PCA提取主要特征
  16. 【Python大作业】耦合网络信息传播
  17. 计算机组成-无符号数乘法
  18. Ubuntu1604报错统一解决方法E: 无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂时不可用)
  19. 飞机订票系统c语言大作业,C语言知识学习飞机订票系统
  20. 汉克时代 签2份合同_在动荡的时代找到一份工作

热门文章

  1. 计算机网络——运输层(来看看,你不会后悔的)
  2. cleanmymac要不要下载装机?好不好用
  3. java如何获取单框的值_javaWeb获取文本框的值
  4. bootstrapmodel确认操作框_bootstrap模态框 确认框/提示框 的常用实现
  5. Redis的Windows安装和简单使用
  6. 精灵学院 - 经典口袋宝贝战斗手游 技术支持
  7. 华为eNSP配置生成树STP协议
  8. Python实训 姓名大作战进阶版(封装,继承)
  9. 数据科学、管理科学系课程教学课件——FineReport实验指导书节选====金融经管类专业
  10. 从Sliverlight Alpha(May2007)到Sliverlight Alpha Refresh之间变化