JAVA 图形开发中组件对齐方法及界面开发

/*文章中用到的代码只是一部分,需要源码的可通过邮箱联系我 [email protected]*/

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

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

1.直接使用坐标贴图

  如下面这个计算器的制作

  

 1 package Graphic;
 2
 3 import java.awt.BorderLayout;
 4 import java.awt.Dimension;
 5 import java.awt.FlowLayout;
 6
 7 import javax.swing.JButton;
 8 import javax.swing.JFrame;
 9 import javax.swing.JLabel;
10 import javax.swing.JPanel;
11 import javax.swing.JTextField;
12
13 public class Calculator {
14
15     public static void main(String[] args) {
16         Calculator login = new Calculator();
17         login.Init();
18     }
19
20     public void Init()
21     {
22         String arr[] = {"1","2","3","4","5","6","7","8","9","0","+","-","*","/","="};
23
24         JFrame frame = new JFrame();
25         frame.setTitle("计算器");
26         frame.setSize(600,400);
27         frame.setLocationRelativeTo(null);
28         frame.setDefaultCloseOperation(3);
29         frame.setResizable(false);
30
31         frame.setLayout(null);
32
33         JTextField text1 = new     JTextField();
34         text1.setBounds(40, 20, 400, 40);
35         frame.add(text1);
36
37
38         for(int i=0;i<9;i++)
39         {
40             JButton button = new JButton();
41             button.setText(arr[i]);
42             button.setBounds((i%3)*100+40, (i/3)*60+80, 80, 40);
43             frame.add(button);
44         }
45
46         JButton button = new JButton();
47         button.setText("0");
48         button.setBounds(40, 260, 180, 40);
49         frame.add(button);
50
51         JButton button1 = new JButton();
52         button1.setText(".");
53         button1.setBounds(240, 260, 80, 40);
54         frame.add(button1);
55
56         for(int i=10;i<arr.length - 1;i++)
57         {
58             JButton button2 = new JButton();
59             button2.setText(arr[i]);
60             button2.setBounds(360, (i-10)*60+80, 80, 40);
61             frame.add(button2);
62         }
63
64
65         JButton button2 = new JButton();
66         button2.setText("x^2");
67         button2.setBounds(460, 80, 80, 40);
68         frame.add(button2);
69
70         JButton button3 = new JButton();
71         button3.setText("√x");
72         button3.setBounds(460, 140, 80, 40);
73         frame.add(button3);
74
75         JButton button4 = new JButton();
76         button4.setText("=");
77         button4.setBounds(460, 200, 80, 100);
78         frame.add(button4);
79
80         frame.setVisible(true);
81     }
82 }

计算器

2.设置组件大小

  下面这个界面的制作

  

 1 package Graphic;
 2
 3 import java.awt.BorderLayout;
 4 import java.awt.Dimension;
 5 import java.awt.FlowLayout;
 6
 7 import javax.swing.ImageIcon;
 8 import javax.swing.JButton;
 9 import javax.swing.JCheckBox;
10 import javax.swing.JFrame;
11 import javax.swing.JLabel;
12 import javax.swing.JPanel;
13 import javax.swing.JPasswordField;
14 import javax.swing.JTextField;
15
16 public class Login1 {
17
18     public static void main(String[] args) {
19         // TODO Auto-generated method stub
20         Login1 login = new Login1();
21         login.Init();
22     }
23
24     public void Init()
25     {
26         JFrame frame = new JFrame();
27         frame.setTitle("QQ");
28         frame.setSize(430,330);
29         frame.setLocationRelativeTo(null);
30         frame.setDefaultCloseOperation(3);
31         frame.setResizable(false);
32
33         BorderLayout b1 = new BorderLayout();
34         frame.setLayout(b1);
35         //添加图片 北
36         ImageIcon icon = new ImageIcon("C:\\Users\\long452a\\Desktop\\a1.jpg");
37         JLabel labIcon = new JLabel(icon);
38         frame.add(labIcon,BorderLayout.NORTH);
39
40         //添加面板容器:账号、密码
41         JPanel centerPanel = new JPanel();
42         centerPanel.setLayout(new FlowLayout(FlowLayout.CENTER,10,5));
43
44         JLabel labName = new JLabel("账号:");
45         labName.setHorizontalAlignment(JLabel.RIGHT);//这步很关键,通过设置右对齐的方式在前面补空
46         labName.setPreferredSize(new Dimension(110,30));
47         centerPanel.add(labName);
48
49         JTextField textName = new JTextField();
50         textName.setPreferredSize(new Dimension(180,30));
51         centerPanel.add(textName);
52
53
54         JLabel labPassowrd = new JLabel("密码 :");
55         labPassowrd.setHorizontalAlignment(JLabel.RIGHT);
56         labPassowrd.setPreferredSize(new Dimension(110,30));
57         centerPanel.add(labPassowrd);
58
59         JPasswordField textPassword = new JPasswordField();
60         textPassword.setPreferredSize(new Dimension(180,30));
61         centerPanel.add(textPassword,labPassowrd);
62
63
64         JPanel centerPanel1 = new JPanel();
65         centerPanel1.setLayout(new FlowLayout(FlowLayout.CENTER,5,5));
66         JCheckBox rememberBox = new JCheckBox();
67         rememberBox.setText("记住密码");
68         rememberBox.setHorizontalAlignment(JLabel.RIGHT);
69         rememberBox.setPreferredSize(new Dimension(140,30));
70         centerPanel.add(rememberBox);
71
72         JCheckBox rememberBox2 = new JCheckBox();
73         rememberBox2.setText("自动登录");
74         rememberBox2.setHorizontalAlignment(JLabel.RIGHT);
75         rememberBox2.setPreferredSize(new Dimension(100,30));
76         centerPanel.add(rememberBox2);
77
78         JButton southButton = new JButton();
79         southButton.setPreferredSize(new Dimension(120,40));
80         southButton.setText("登录");
81         centerPanel1.add(southButton);
82
83         frame.add(centerPanel1, BorderLayout.SOUTH);
84         frame.add(centerPanel,BorderLayout.CENTER);
85         frame.setVisible(true);
86     }
87 }

QQ界面

原文地址:https://www.cnblogs.com/csu-lmw/p/9251916.html

时间: 2024-08-10 11:05:44

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

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

IOS开发中重写init方法使用需谨慎 今天在写一个小软件的时候出现一点问题,这个软件的功能是搜索全国学校,首页就是搜索输入框,在框中输入完要查询的学校所在省份,点击buttom后就会跳转到对应的视图控制器中,然后把搜索结果呈现在一个TableView上,但是我在调试时,每次输入完然后点击搜索按钮时,弹出结果列表总是空的,我需要返回到首页再点击一次搜索才会出现结果,而且我在首页更改搜索关键字之后,点击搜索,结果还是上次的搜索结果,必须返回点击一次才会出现这次的搜索结果. 经过大神指点,原来这个问

向Java枚举类型中添加新方法

除了不能继承enum之外,可将其看做一个常规类.甚至可以有main方法. 注意:必须先定义enum实例,实例的最后有一个分号. 下面是一个例子:返回对实例自身的描述,而非默认的toString返回枚举实例的名字. public enum Color { RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4); // 成员变量 private String nam

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

阅读目录 建议1:不要在常量和变量中出现易混淆的字母 建议2:莫让常量蜕变成变量 建议3:三元操作符的类型务必一致 建议4:避免带有变长参数的方法重载 建议5:别让null值和空值威胁到变长方法              The reasonable man adapts himself to the world; The unreasonable one persists in trying to adapt the world himself. 明白事理的人使自己适应世界:不明事理的人想让世

Java和JavaScript中使用Json方法大全

林炳文Evankaka原创作品. 转载请注明出处http://blog.csdn.net/evankaka   摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 它基于ECMAScript的一个子集. JSON採用全然独立于语言的文本格式,可是也使用了相似于C语言家族的习惯(包含C.C++.C#.Java.JavaScript.Perl.Python等).这些特性使JSON成为理想的数据交换语言. 易于人阅读和编写.同一时候也易于机器解析和生成

java 重写Object中的hashCode方法-----转载

1 hashCode()用于返回调用该方法的对象的散列码值,此方法将返回整数形式的散列码值. 2 在object类中,hashcode()方法是本地方法,返回的是对象的地址值,而object类中的equals()方法比较的也是两个对象的地址 值,如果equals()相等,说明两个对象地址值也相等,当然hashcode()也就相等了.一旦一个类重写equals()方法,通常也会重写 hashCode()方法. 3 4 下面是重写hashCode()方法的约定的内容,来自Object规范[JavaS

java.lang.Math中的基本方法

java.lang.Math类提供的方法都是static的,“静态引入 ”使得不必每次在调用类方法时都在方法前写上类名:             import static java.lang.Math.*; 这样在调用Math的方法时就能够简单地写出方法名,比如:             cos(radians); ---------------------------------------------------------- 1.基本方法: abs, max, min, ceil, fl

java.util.ComparableTimSort中的sort()方法简单分析

TimSort算法是一种起源于归并排序和插入排序的混合排序算法,设计初衷是为了在真实世界中的各种数据中能够有较好的性能. 该算法最初是由Tim Peters于2002年在Python语言中提出的. TimSort 是一个归并排序做了大量优化的版本号. 对归并排序排在已经反向排好序的输入时表现O(n2)的特点做了特别优化.对已经正向排好序的输入降低回溯.对两种情况混合(一会升序.一会降序)的输入处理比較好. 在jdk1.7之后.Arrays类中的sort方法有一个分支推断,当LegacyMerge

java基础----&gt;String中的split方法的原理

这里面主要介绍一下关于String类中的split方法的使用以及原理. split函数的说明 split函数java docs的说明: When there is a positive-width match at the beginning of this string then an empty leading substring is included at the beginning of the resulting array.A zero-width match at the beg

Android开发中相见恨晚的方法、类或接口

摘抄.整理加个人总结,感谢所有参与者! 1.      Resources类中的getIndentifier(name,defType,defPackage)方法,根据资源名次获取其ID: 2.      Array类中的asList(T-array)方法,数组转List集合: 3.      View类的callOnClick(),performClick()和performLongClick(): 4.      TextView类中的append方法,追加文本: 5.      Decim