JAVA 图形开发中组件对齐方法及界面开发
/*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 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 图形开发中组件对齐方法及界面开发的更多相关文章
- 编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则)
编写高质量代码:改善Java程序的151个建议(第一章:JAVA开发中通用的方法和准则) 目录 建议1: 不要在常量和变量中出现易混淆的字母 建议2: 莫让常量蜕变成变量 建议3: 三元操作符的类型务 ...
- visual studio 2019工具里添加开发中命令提示符的方法
最新新装了visual studio 2019,发现默认的没有开发者命令提示符 现将添加步骤描述如下: 从VS2019菜单选择"Tools",然后选择"外部工具" ...
- IOS开发中重写init方法使用需谨慎
IOS开发中重写init方法使用需谨慎 今天在写一个小软件的时候出现一点问题,这个软件的功能是搜索全国学校,首页就是搜索输入框,在框中输入完要查询的学校所在省份,点击buttom后就会跳转到对应的视图 ...
- Java 8 接口中的默认方法与静态方法
Java 8 接口中的默认方法与静态方法 1. 接口中的默认方法 允许接口中包含具有具体实现的方法,该方法称"默认方法",默认方法使用用 default 关键字修饰. public ...
- 038——VUE中组件之WEB开发中组件使用场景与定义组件的方式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 2017.10.28 针对Java Web应用中错误异常处理方法的运用
针对Java Web应用中错误异常处理方法的运用 在javaweb中其异常都需要对Checked Exception之下的Exception进行继承,并且有选择地对发生的错误和异常进行处理.Java同 ...
- 在开发中进入一个方法后想要到原来那行 ctrl+alt+左 回到上一步 ctrl+alt+右 回到下一步
在开发中进入一个方法后想要到原来那行 ctrl+alt+左 回到上一步ctrl+alt+右 回到下一步
- java.nio.Buffer 中的 flip()方法
在Java NIO编程中,对缓冲区操作常常需要使用 java.nio.Buffer中的 flip()方法. Buffer 中的 flip() 方法涉及到 Buffer 中的capacity.posi ...
- 在idea的java开发中字符串length()方法获取长度与赋值不符的问题
最近在开发中用到length()方法获取中文字符串的长度,发现获得的长度与实际不符.比如个String类型赋值为"中",但获取长度却是2. 这让我百思不得其解,后来突然想起来我在研 ...
随机推荐
- npm 设置地址
-- 查看当前地址: npm config get registry https://registry.npmjs.org/ npm config get disturl undefined -- 设 ...
- maven的三种工程pom、jar、war的区别
转: maven的三种工程pom.jar.war的区别 2018年09月03日 10:02:53 houjx3 阅读数:2918更多 个人分类: maven 1.pom工程:用在父级工程或聚合工程 ...
- python 删除2天前后缀为.log的文件
python脚本 删除2天前后缀为.log的文件 #!/usr/local/python/bin/python #-*-coding=utf8 -*- import time import os,sy ...
- python---django中orm的使用(1)
首先推荐两篇文章:Django之ORM操作,http://www.cnblogs.com/yuanchenqi/articles/6083427.html十分全面. 另外和python---ORM之S ...
- 数学:二次剩余与n次剩余
二次剩余求的是这个东西 如果给定x,再给定若干个大的质数p,如果结果a相同,那么x是完全平方数? 给出别人的二次剩余的代码: /*poj 1808 题意: 判断平方剩余,即判断(x^2)%p=a是否有 ...
- SQL语句(七)简单查询
--简单信息查询 --例1 查询所有学生的信息 --学生 -- Student --所有学生 -- 不限定班级.性别.年龄等条件 --所有信息 -- 所有字段,* select * from stud ...
- 原生JS 基础总结
0. 好习惯 分号 ; 花括号 {}, var 弄清楚 null , undefined 区别 , isNaN, === 与 == 区别 1. prompt , confirm , alert 不同框 ...
- Java 多线程(Thread) 同步(synchronized) 以及 wait, notify 相关 [实例介绍]
场景描述 有一家很大的商场,在某市有几个商品配送中心,并有几家分店,这家商场经营很多的商品,平时运营情况是这样的: 根据各分店的商品销售情况,给分店配送相应需求量的商品:并上架到分店指让的位置,供客户 ...
- Codeforces 238 div2 A. Gravity Flip
题目链接:http://codeforces.com/contest/405/problem/A 解题报告:有n列箱子竖直放置,每列箱子上都有数量不等的箱子,这些箱子之间没有固定,当重力方向改为平行向 ...
- python中的__iter__ __reversed__ __next__
__reversed__ 返回集合的倒叙迭代器,如果没有实现这个方法,reversed()会去使用__getitem__和__len__来实现 介绍__next__和 __iter__方法需要了解下可 ...