/*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 1978702969@qq.com*/

在上篇博客中提到了JAVA图形界面开发时的两种布局,流式布局和边框布局。

在实际使用中可能会发现,往容器中添加组件往往并不能得到想要的结果。比如想上下对齐两个组件,而流式布局是从左到右的,此时就很难实现上下对齐,此篇文章将介绍两个方法。

1.直接使用坐标贴图

  如下面这个计算器的制作

  

 package Graphic;

 import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout; import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField; public class Calculator { public static void main(String[] args) {
Calculator login = new Calculator();
login.Init();
} public void Init()
{
String arr[] = {"1","2","3","4","5","6","7","8","9","0","+","-","*","/","="}; JFrame frame = new JFrame();
frame.setTitle("计算器");
frame.setSize(600,400);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(3);
frame.setResizable(false); frame.setLayout(null); JTextField text1 = new JTextField();
text1.setBounds(40, 20, 400, 40);
frame.add(text1); for(int i=0;i<9;i++)
{
JButton button = new JButton();
button.setText(arr[i]);
button.setBounds((i%3)*100+40, (i/3)*60+80, 80, 40);
frame.add(button);
} JButton button = new JButton();
button.setText("0");
button.setBounds(40, 260, 180, 40);
frame.add(button); JButton button1 = new JButton();
button1.setText(".");
button1.setBounds(240, 260, 80, 40);
frame.add(button1); for(int i=10;i<arr.length - 1;i++)
{
JButton button2 = new JButton();
button2.setText(arr[i]);
button2.setBounds(360, (i-10)*60+80, 80, 40);
frame.add(button2);
} JButton button2 = new JButton();
button2.setText("x^2");
button2.setBounds(460, 80, 80, 40);
frame.add(button2); JButton button3 = new JButton();
button3.setText("√x");
button3.setBounds(460, 140, 80, 40);
frame.add(button3); JButton button4 = new JButton();
button4.setText("=");
button4.setBounds(460, 200, 80, 100);
frame.add(button4); frame.setVisible(true);
}
}

计算器

2.设置组件大小

  下面这个界面的制作

  

 package Graphic;

 import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout; import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField; public class Login1 { public static void main(String[] args) {
// TODO Auto-generated method stub
Login1 login = new Login1();
login.Init();
} public void Init()
{
JFrame frame = new JFrame();
frame.setTitle("QQ");
frame.setSize(430,330);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(3);
frame.setResizable(false); BorderLayout b1 = new BorderLayout();
frame.setLayout(b1);
//添加图片 北
ImageIcon icon = new ImageIcon("C:\\Users\\long452a\\Desktop\\a1.jpg");
JLabel labIcon = new JLabel(icon);
frame.add(labIcon,BorderLayout.NORTH); //添加面板容器:账号、密码
JPanel centerPanel = new JPanel();
centerPanel.setLayout(new FlowLayout(FlowLayout.CENTER,10,5)); JLabel labName = new JLabel("账号:");
labName.setHorizontalAlignment(JLabel.RIGHT);//这步很关键,通过设置右对齐的方式在前面补空
labName.setPreferredSize(new Dimension(110,30));
centerPanel.add(labName); JTextField textName = new JTextField();
textName.setPreferredSize(new Dimension(180,30));
centerPanel.add(textName); JLabel labPassowrd = new JLabel("密码 :");
labPassowrd.setHorizontalAlignment(JLabel.RIGHT);
labPassowrd.setPreferredSize(new Dimension(110,30));
centerPanel.add(labPassowrd); JPasswordField textPassword = new JPasswordField();
textPassword.setPreferredSize(new Dimension(180,30));
centerPanel.add(textPassword,labPassowrd); JPanel centerPanel1 = new JPanel();
centerPanel1.setLayout(new FlowLayout(FlowLayout.CENTER,5,5));
JCheckBox rememberBox = new JCheckBox();
rememberBox.setText("记住密码");
rememberBox.setHorizontalAlignment(JLabel.RIGHT);
rememberBox.setPreferredSize(new Dimension(140,30));
centerPanel.add(rememberBox); JCheckBox rememberBox2 = new JCheckBox();
rememberBox2.setText("自动登录");
rememberBox2.setHorizontalAlignment(JLabel.RIGHT);
rememberBox2.setPreferredSize(new Dimension(100,30));
centerPanel.add(rememberBox2); JButton southButton = new JButton();
southButton.setPreferredSize(new Dimension(120,40));
southButton.setText("登录");
centerPanel1.add(southButton); frame.add(centerPanel1, BorderLayout.SOUTH);
frame.add(centerPanel,BorderLayout.CENTER);
frame.setVisible(true);
}
}

QQ界面

JAVA 图形开发中组件对齐方法及界面开发的更多相关文章

  1. 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)

    编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...

  2. visual studio 2019工具里添加开发中命令提示符的方法

    最新新装了visual studio 2019,发现默认的没有开发者命令提示符 现将添加步骤描述如下: 从VS2019菜单选择"Tools",然后选择"外部工具" ...

  3. IOS开发中重写init方法使用需谨慎

    IOS开发中重写init方法使用需谨慎 今天在写一个小软件的时候出现一点问题,这个软件的功能是搜索全国学校,首页就是搜索输入框,在框中输入完要查询的学校所在省份,点击buttom后就会跳转到对应的视图 ...

  4. Java 8 接口中的默认方法与静态方法

    Java 8 接口中的默认方法与静态方法 1. 接口中的默认方法 允许接口中包含具有具体实现的方法,该方法称"默认方法",默认方法使用用 default 关键字修饰. public ...

  5. 038——VUE中组件之WEB开发中组件使用场景与定义组件的方式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 2017.10.28 针对Java Web应用中错误异常处理方法的运用

    针对Java Web应用中错误异常处理方法的运用 在javaweb中其异常都需要对Checked Exception之下的Exception进行继承,并且有选择地对发生的错误和异常进行处理.Java同 ...

  7. 在开发中进入一个方法后想要到原来那行 ctrl+alt+左 回到上一步 ctrl+alt+右 回到下一步

    在开发中进入一个方法后想要到原来那行 ctrl+alt+左 回到上一步ctrl+alt+右 回到下一步

  8. java.nio.Buffer 中的 flip()方法

    在Java NIO编程中,对缓冲区操作常常需要使用  java.nio.Buffer中的 flip()方法. Buffer 中的 flip() 方法涉及到 Buffer 中的capacity.posi ...

  9. 在idea的java开发中字符串length()方法获取长度与赋值不符的问题

    最近在开发中用到length()方法获取中文字符串的长度,发现获得的长度与实际不符.比如个String类型赋值为"中",但获取长度却是2. 这让我百思不得其解,后来突然想起来我在研 ...

随机推荐

  1. activiti 用户手册中 10分钟 小例子 简单代码搭建 及 其中的 各种坑

    看mossle的 5.16 用户手册中的  快速起步:10分钟教程 想自己跑一下,虽然官方文档已经写的非常详细了,但是实际操作中还是遇到各种坑,这里记录下来. 首先官网下载最新的 5版本 full G ...

  2. 14.会场安排问题(L4)

    时间限制:3000 ms  |  内存限制:65535 KB 难度:4   描述 学校的小礼堂每天都会有许多活动,有时间这些活动的计划时间会发生冲突,需要选择出一些活动进行举办.小刘的工作就是安排学校 ...

  3. SQL Server 中ROW_NUMBER() OVER基本用法

    1.不能排序法 * FROM table1 WHERE id NOT IN ( SELECT TOP 开始的位置 id FROM table1 ) 2.SQL 2000 临时表法 DECLARE @S ...

  4. Python数据分析初始(一)

    基础库 pandas:python的一个数据分析库(pip install pandas) pandas 是基于 NumPy 的一个 python 数据分析包,主要目的是为了 数据分析 .它提供了大量 ...

  5. Java基础-通过POI接口处理xls

    Java基础-通过POI接口处理xls 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  6. vue ssr服务端渲染

    SSR:Server Side Rendering(服务端渲染) 目的是为了解决单页面应用的 SEO 的问题,对于一般网站影响不大,但是对于论坛类,内容类网站来说是致命的,搜索引擎无法抓取页面相关内容 ...

  7. CSS-3 文字阴影—text-shadow 的使用

    text-shadow还没有出现的时候,大家在网页中的阴影就是用ps一张图片作为背景.那么现在有了CSS3的这个属性,日后我们的工作会更简洁些. text-shadow之前出现过,不过不久就被Pass ...

  8. 2016最新的中国省市区三级数据库表.sql mssql

    /****** Object: Table [dbo].[t_Area] Script Date: 09/10/2016 09:35:46 ******/ SET ANSI_NULLS ON GO S ...

  9. 云计算--hbase shell

    具体的 HBase Shell 命令如下表 1.1-1 所示: 下面我们将以“一个学生成绩表”的例子来详细介绍常用的 HBase 命令及其使用方法. 这里 grad 对于表来说是一个列,course ...

  10. 抓包获取百度音乐API

    这次抓包是获取手机APP中的数据包,共分为三个部分: 1.win7建立wifi 2.PC架设代理服务器 手机设置代理 3.抓包分析 一.win7建立wifi 在win7下搭建wifi非常简单,网上的教 ...