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. 这让我百思不得其解,后来突然想起来我在研 ...
随机推荐
- 解题:BZOJ 2989 数列
题面 学习二进制分组 题目本身可以看成二维平面上的问题,转成切比雪夫距离后就是矩形和了 二进制分组是将每个修改添加到末尾,然后从后往前二进制下进位合并,这样最多同时有$\log n$组,每个修改只会被 ...
- 【CH4201】楼兰图腾
题目大意:给定一个长度为 N 的序列,从序列中任意挑出三个数,求满足中间的数字值最小(最大)有多少种情况. 题解:建立在值域上的树状数组,从左到右扫描一遍序列,统计出每个点左边有多少个数大于(小于)该 ...
- redirect和forward的区别
异同 1.从地址栏显示来说 forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以 ...
- CSUOJ 1170 A sample problem
J: A Simple Problem Submit Page Time Limit: 1 Sec Memory Limit: 128 Mb Submitted: 87 S ...
- POJ - 1753 Flip Game(状压枚举)
https://vjudge.net/problem/POJ-1753 题意 4*4的棋盘,翻转其中的一个棋子,会带动邻接的棋子一起动.现要求把所有棋子都翻成同一种颜色,问最少需要几步. 分析 同一个 ...
- Javascript中的垃圾回收机制
Javascript 中的内存管理 译自MDN,Memory Management 简介 在底层语言中,比如C,有专门的内存管理机制,比如malloc() 和 free().而Javascript是有 ...
- 加速计 & CoreMotion
CHENYILONG Blog 加速计 & CoreMotion 加速计 & CoreMotion 技术博客http://www.cnblogs.com/ChenYilong/ 新浪微 ...
- 两个不能同时共存的条件orWhere查询
举例: //我的所有的积分记录 1,我分享的:2,我点击的:(两个条件不能共存) $activity_log = ActivitySharedLog::where(function ($query) ...
- 第9月第27天 AVAssetExportSession AVAssetExportPresetMediumQuality
1. AVAssetExportPresetMediumQuality和 AVAssetExportPreset960x540 码率相差很大,视频大小也会相差很大 AVAssetExportPrese ...
- lemon spj无效编译器解决方法
反正我是被坑了很久,心里增的敲难过呀! 我曾经无数次的想把它解决掉: 啊啊啊啊啊啊! 什么嘛!什么嘛! 这个空白的框框里到底要填什么嘛!!! 你已经是一个成熟的lemon了,就不能自动识别给个选项吗! ...