/*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 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. No module named flask.ext.script 解决方法

    把 .ext. 换成 _ 就OK了 from flask.ext.script import Manager from flask_script import Manager

  2. ajax实现输入用户名异步提示是否可用

    <script type="text/javascript"> //页面加载完毕后执行 $(document).ready(function(){ //用户名输入框绑定 ...

  3. Nginx ab压力测试

    20-ab压力测试及nginx性能统计模块 优化的启发,打开的文件太多 Nginx 错误日志显示,打开文件数太多 系统层面 more /proc/sys/net/core/somaxconn 单个Ng ...

  4. spm

    Spatial Pyramid Matching 看了很多关于SPM的介绍,但是网络上的资源大多都是对论文Beyond bags of features: Spatial pyramid matchi ...

  5. python selenium - web自动化环境搭建

    前提: 安装python环境. 参考另一篇博文:https://www.cnblogs.com/Simple-Small/p/9179061.html web自动化:实现代码驱动浏览器进行点点点的操作 ...

  6. 采用jacob实现word转pdf

    网络上已经有很多这方面的内容,在用之前也是参考了好多别人的文章,下面记录下我自己的整合过程.整个过程都比较简单: 开发环境:win8 64位系统,在2008下面部署也是一样的. 文档要求jdk的版本要 ...

  7. gbk文件转为utf8文件

    convmv -f gbk -t utf- --notest -r ./

  8. 恶意代码分析实战-确认EXE什么时候编译的

    场景 确认开源的后门在中毒机器上是什么版本,具有什么功能. 思路 1.查看样本PE里的编译时间 2.对照开源后门里组件的编译时间 技术点 查看NT头-TimeDateStamp struct IMAG ...

  9. 【CTF WEB】命令执行

    命令执行 找到题目中的KEY KEY为八位随机字符数字,例如key:1234qwer.提交1234qwer 即可. 漏洞代码 <?php system("ping -c 2 " ...

  10. struct termios结构体详解

    一.数据成员 termios 函数族提供了一个常规的终端接口,用于控制非同步通信端口. 这个结构包含了至少下列成员:tcflag_t c_iflag;      /* 输入模式 */tcflag_t ...