1.避免每一次都到包中引用的方法:在程序的最前加入包,eg:import java.awt.BorderLayout;
import javax.swing.ImageIcon;
**注意:
没有用到的包,不要加在前面,增加程序运行的负担
2.程序的结构化管理
把布局中每一个部分分别写成一个类,有几大好处,第一,简化主程序,第二,令结构清晰明了,第三,便于查找错误,与进行修改
3.关于写界面的思路与顺序
(1)首先对要做出的界面的效果进行观察和分析,确定需要使用的布局以及组件
如在计算器中总体要用到边框式布局BorderLayout();
(2)接着根据布局为界面分块,例如,如果我用的是流式布局,那么我想要哪些组件显示在哪一部分,就要通过组件大小和对齐方式来控制;如果我用
的是边框式布局,那么,我需要哪几块部分,NORTH,SOUTH等等每一块部分放什么,怎么划分显得尤为重要,比如,在计算器界面的实现上,北部存放菜
单栏和输入框,中部存放JButton
(3)然后,用一个initUI()的方法,调用各个部分的方法,设置窗体属性,这些属性往往包括,大小 jf.setSize(),标题jf.setTitle(),背景
ImageIcon backgroundImage等等举例计算器的:
public void initUI(){
//实例化一个JFrame类
JFrame jf = new JFrame();
//设置对象的属性值
jf.setSize(328,450);//设置对象的大小
jf.setTitle("计算器");//设置对象的标题
jf.setDefaultCloseOperation(3);// 设置窗体关闭时退出程序
jf.setResizable(false);// 设置禁止改变窗体的大小
jf.setVisible(true);// 设置窗体为可见
//JFrame默认的布局是边框布局
BorderLayout bl = new BorderLayout();
// 设置窗体的布局方式为边框布局
jf.setLayout(bl);
// 创建北边的面板对象
JPanel northPane = northPane();
//northPane.setOpaque(false);//设置面板为透明
// 设置面板的大小
northPane.setPreferredSize(new Dimension(0, 150));
// 将northPane添加到窗体的北边
jf.add(northPane, BorderLayout.NORTH);
// 创建一个中间的面板对象
JPanel centerPane = centerPane();
//centerPane.setOpaque(false);//设置面板为透明
// 将centerPane添加到窗体的中间
jf.add(centerPane, BorderLayout.CENTER);
}
(4)最后,自然就是要把各部分的方法一一写好~写方法的时候,有一个统一的模式,实例化面板,实例化组件,设置组件属性,将组件添加到面板上,
最后的最后非常重要,一定要return panel~~不然会报错,也没有将设置好的方法正确的传入initUI()
4.关于做练习的感触
这次做计算器的练习很是痛苦,因为Win7的计算器的=键和0键实在是非常的奇葩!!!为了分开它的区域,伤透了脑筋,我在写这篇总结的时候还未想出
好的方法~太晚了~我准备去睡觉了~起床来再弄一下练习~这是目前的效果,还需要修改的地方有,0和=的按钮,输入框的右对齐,还有菜单栏如何设置~等我成功了再将做练习的感触这一部分详细的贴上来~~~
这是现在的练习代码:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JMenuBar;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Calculator {
public static void main(String[] args) {
//实例化一个Calculator类
Calculator cal = new Calculator();
cal.initUI();
}
public void initUI(){
//实例化一个JFrame类
JFrame jf = new JFrame();
//设置对象的属性值
jf.setSize(328,450);//设置对象的大小
jf.setTitle("计算器");//设置对象的标题
//jf.setLocationRelativeTo(null);
jf.setDefaultCloseOperation(3);// 设置窗体关闭时退出程序
jf.setResizable(false);// 设置禁止改变窗体的大小
jf.setVisible(true);// 设置窗体为可见
//JFrame默认的布局是边框布局
BorderLayout bl = new BorderLayout();
// 设置窗体的布局方式为边框布局
jf.setLayout(bl);
// 创建北边的面板对象
JPanel northPane = northPane();
//northPane.setOpaque(false);//设置面板为透明
// 设置面板的大小
northPane.setPreferredSize(new Dimension(0, 150));
// 将northPane添加到窗体的北边
jf.add(northPane, BorderLayout.NORTH);
// 创建一个中间的面板对象
JPanel centerPane = centerPane();
//centerPane.setOpaque(false);//设置面板为透明
// 将centerPane添加到窗体的中间
jf.add(centerPane, BorderLayout.CENTER);
}
public JPanel northPane(){
JPanel panel = new JPanel();
panel.setPreferredSize(new Dimension(0, 100));
// 实例化一个流式布局对象,然后指定对齐方式
FlowLayout fl = new FlowLayout(FlowLayout.LEFT);
// 设置panel的布局方式为流式布局
panel.setLayout(fl);
//实例化一个JButton类的对象,然后指定显示文字
//JMenuBar jm = new JMenuBar();
//jm.setPreferredSize(new Dimension(300,20));
//panel.add(jm);
JButton jb1 = new JButton("查看(L)");
jb1.setPreferredSize(new Dimension(100,20));
panel.add(jb1);
//实例化一个JButton类的对象,然后指定显示文字
JButton jb2 = new JButton("编辑(E)");
jb2.setPreferredSize(new Dimension(100,20));
panel.add(jb2);
//实例化一个JButton类的对象,然后指定显示文字
JButton jb3 = new JButton("帮助(H)");
jb3.setPreferredSize(new Dimension(100,20));
panel.add(jb3);
//实例化一个JTextField类的对象,初始化输入框内容为0
JTextField jt = new JTextField("0");
jt.setPreferredSize(new Dimension(300,110));
jt.setEditable(false);// 设置可以编辑
panel.add(jt);
// 返回面板对象
return panel;
}
public JPanel centerPane(){
JPanel panel = new JPanel();
//实例化一个网格布局类的对象
panel.setLayout(new GridLayout(6,5));
//添加所有的按钮
panel.add(new JButton("MC"));
panel.add(new JButton("MR"));
panel.add(new JButton("MS"));
panel.add(new JButton("M+"));
panel.add(new JButton("M-"));
panel.add(new JButton("dl"));
panel.add(new JButton("CE"));
panel.add(new JButton("C"));
panel.add(new JButton("±"));
panel.add(new JButton("√"));
panel.add(new JButton("7"));
panel.add(new JButton("8"));
panel.add(new JButton("9"));
panel.add(new JButton("/"));
panel.add(new JButton("%"));
panel.add(new JButton("4"));
panel.add(new JButton("5"));
panel.add(new JButton("6"));
panel.add(new JButton("*"));
panel.add(new JButton("1/x"));
panel.add(new JButton("1"));
panel.add(new JButton("2"));
panel.add(new JButton("3"));
panel.add(new JButton("-"));
panel.add(new JButton(" "));
panel.add(new JButton("0"));
panel.add(new JButton("00"));
panel.add(new JButton("."));
panel.add(new JButton("+"));
panel.add(new JButton("="));
//返回面板对象
return panel;
}
}
╭︿︿︿╮
{/ ︿︿ /}
( (oo) )
︶ ︶ ︶
- 大小: 17.1 KB
- 大小: 131.7 KB
分享到:
相关推荐
29岁的黄冈中学网校校长汪建宏 屌丝逆袭.docx
还原互联网早期的创业:屌丝逆袭成功之后.docx
还原当年创业:互联网屌丝逆袭后的华丽转身.docx
从《泰囧》看那些屌丝逆袭女神的传奇.pdf
NULL 博文链接:https://1471080924.iteye.com/blog/2157337
图片购物搜索淘淘搜:一个从0到1亿的屌丝创业逆袭.docx
本文作者讲述自己从接触单片机到成为电子工程师再到主管的经历,认真看完的说明你是一个有耐心的人,恭喜你你已经具备做主管的潜质了!!!
屌丝SEO从业者逆袭篇:我要成为一个SEO管理者.docx
QQ飞车抽奖方法,帮助个别小屌丝逆袭的小文本
名校学生如何自学计算机,如果你不知道怎么入门,看看这个吧
无需会员,直接下载,全程高速,屌丝逆袭神器。无视铭感资源,全程起飞
这个东西盈利方式就是短剧cps分销那种,想做正规的话就是购买短剧授权,比如屌丝逆袭这种剧情的爽剧(类似之前做小说分销),前几集可以免费看,后续要开通会员或者购买单级。 模式还是非常不错的,个人感觉现在这...
此工具可实现python代码一键打包成单个exe文件,完全UI界面,只需选择代码地址和图标就可自动生成,是入门必备,屌丝逆袭之良器
这款APP包含各种类型新闻,各种美女图片,图文笑话和搞笑视频。包含技术有Retrofit,Rxjava,Glide,MVP组合屌丝APP。
基于屌丝青年网样式二次开发的WordPress主题:LIiu-One主题 请勿商业运营,违法使用和传播!仅供研究学习使用!
(糗事百科、暴走漫画)屌丝程序员如何一个人打造日PV百万的网站架构
镜心小屌丝聊天机器人,是一款自足行为软件,试试还不错,你问什么他答什么,就是有时候有点让你想象不到。
最新网址大全源码,好123屌丝版网址导航
日前,本技术屌丝又遇到了一个很有意思的问题,应项目要求,需要在页面加载完毕之后获取图片的高度,以此来调整图片上面的覆盖层相对于图片顶端的位置。 但在jquery(function(){ /*XXXXXX*/});里面写了之后发现不是...