java书籍列表控件_图书管理系统总结——JAVA Swing控件简介

断断续续学习JAVA语言,写了一个多月数据库大作业,终于在五一过后写完了。由于第一次使用JAVA和数据库,遇到了许多问题,记录下来,以备以后查看。

我使用的JAVA SE,说实话,在开发后期,觉得JAVA还是EE比较好使,感觉桌面开发JAVA SE没有比Delphi有什么优势。只是考虑到不会Pascal,也不会JAVA,反正利用这个机会,学一学JAVA语言,感觉Pascal么有JAVA应用广,所以入坑了JAVA。

JAVA有一个很不错的入门教程:http://www.runoob.com/java/java-tutorial.html

Swing说实话还是自己码代码比较自由,但是由于时间关系,还是使用了第三方插件Eclispe下的WindowBuilder。

Swing也有一些美化包:BeautyEye https://www.oschina.net/p/beautyeye?fromerr=MxoPrtJ5

JGoodies:http://www.oschina.net/p/jgoodies+look+feels/?fromerr=Yi99jkcA

以及有Swing教程:http://www.runoob.com/w3cnote/java-swing-demo-intro.html

其实这种集成的控件最大的缺点就是不好修改。像我的3K分辨率,被分辨率问题搞了好半天,而且由于分辨率问题,InternalJFrame根本没法用,只好全程使用JFrame。毕竟时间有限,也没时间研究。言归正传:

一、JFrame使用生成窗口:

setTitle("\u56FE\u4E66\u7BA1\u7406\u5458\u7CFB\u7EDF\u4E3B\u754C\u9762");//添加标题

setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);//设置关闭模式:EXIT_ON_CLOSE是退出系统,这时候所有窗口都关闭了。这里WindowConstants.DO_NOTHING_ON_CLOSE为不对关闭按钮做任何操作//还可以使用setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);为释放当前窗口setBounds(0, 0, screenWidth, screenHeight);//初始化窗口位置和大小

//加入一个顶层容器

contentPane = newJPanel();

contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));

setContentPane(contentPane);

如果只要设置大小,还可以

setSize(new Dimension(screenSize.width,screenSize.height));

很重要的一点,捕获分辨率

//设置跟随分辨率变化窗口

Toolkit kit =Toolkit.getDefaultToolkit();

Dimension screenSize=kit.getScreenSize();private int screenHeight = (int) screenSize.getHeight();private int screenWidth = (int) screenSize.getWidth();private double enlargement_x=screenWidth/1920;private double enlargement_y=screenHeight/1080;

窗口居中显示:

windowWidth = this.getWidth(); //获得窗口宽

windowHeight = this.getHeight(); //获得窗口高

this.setLocation(screenWidth / 2 - windowWidth / 2, screenHeight / 2 -windowHeight / 2);//设置窗口居中显示

设置最大化

//设置JFrame最大化,要放在setVisible之后才能刷新,否则只执行一次

this.setExtendedState(Frame.MAXIMIZED_BOTH);

二、其他控件使用

这次图书管理系统使用了常见的控件:

JLabel用于添加标题,以及作为盛放图片的容器。

JTextField用于供用户输入的单行文本框

JTextArea用于供用户多行文本输入

注意默认的是文字到边框是不会换行的,若想是得文字输入到右边框出换行,应加入以下代码:

bookDescTxt.setLineWrap(true);//bookDescTxt是一个JTextArea对象

JButton按钮

JComboBox下拉框

JTable插入表格

JMenuBar用于放置Jmenu,也就是菜单栏。与之配套的有JMenu为一条菜单,可以再往下面和右边添加一条菜单。JMenuItem只能在其下面添加条目。

三、容器:

Swing里面所有的控件都要放置在容器里面。而且这样有一点好处,那就是将容器置为不可见,那么其上面所有控件都不见了。正如其名,容器好处在于可以整体控制控件的布局,做到打包处理。

做多用的就是Jpanel.此外还有JDeskToppane用于放置许多InternalFrame,但是由于没有用InternalFrame,自然也没用了。

还使用了放置表格JTable的容器:JScrollPane,用于产生一个滑动条,便于翻阅表格数据。

还有做到分屏的JSplitPane,这样可以左边放置各种导航面板,右边根据导航面板显示相应的内容。

四、布局管理器:

将控件加入面板以后可以使用绝对布局,规定他们实际位置。也可以用布局管理器。

在WindowBuilder下拖动控件后,会自动生成代码。可能并不太完美,还要自己调整一下。

用到的布局有GroupLayout,就是按相随位置自由摆放。但感觉在WindowBuilder中调整起来还是有些麻烦。常见的代码有:

GroupLayout gl_TutorJp = new GroupLayout(TutorJp);//新建一个GroupLayout管理器

TutorJp.setLayout(gl_TutorJp);//将其放到容器中//设置水平方向布局

gl_TutorJp.setHorizontalGroup(

gl_TutorJp.createParallelGroup(Alignment.LEADING)

.addComponent(SearchJIF, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE,736, Short.MAX_VALUE)

//加入控件,第三个到第五个参数一次是水平方向控件长的最小值,当前显示值(推荐值),最大值

.addComponent(ID_JIF, GroupLayout.DEFAULT_SIZE, 736, Short.MAX_VALUE)

.addComponent(RecomJIF, Alignment.TRAILING, GroupLayout.DEFAULT_SIZE,736, Short.MAX_VALUE)

.addComponent(ExitJPL, GroupLayout.DEFAULT_SIZE,741, Short.MAX_VALUE)

.addGroup(gl_TutorJp.createSequentialGroup()

.addGap(263)

.addComponent(WwlcomeJL)

.addContainerGap(342, Short.MAX_VALUE))//间隙也作为一种元件添加进去,用于控制元件间间隙。

);//设置垂直位置

gl_TutorJp.setVerticalGroup(

gl_TutorJp.createParallelGroup(Alignment.LEADING)

.addGroup(gl_TutorJp.createSequentialGroup()

.addComponent(SearchJIF, GroupLayout.PREFERRED_SIZE,459, GroupLayout.PREFERRED_SIZE)

.addPreferredGap(ComponentPlacement.RELATED)

.addComponent(ID_JIF, GroupLayout.PREFERRED_SIZE,491, GroupLayout.PREFERRED_SIZE)

.addPreferredGap(ComponentPlacement.UNRELATED)

.addComponent(RecomJIF, GroupLayout.DEFAULT_SIZE,298,GroupLayout.PREFERRED_SIZE )

.addComponent(ExitJPL, GroupLayout.PREFERRED_SIZE,260, GroupLayout.PREFERRED_SIZE)

.addPreferredGap(ComponentPlacement.RELATED,40, Short.MAX_VALUE)//.addComponent(WwlcomeJL)//.addGap(47)

.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)//Short.MAX_VALUE

)

);

网状布局:

contentPane.setLayout(new GridLayout(2,1,10,10));//分成2行1列。后面两个是行间距和列间距//按顺序为添加进去控件

contentPane.add(new PieChart(TypeBuffer,TypeNum).getChartPanel()); //添加饼状图

contentPane.add(new BarChart(TypeBuffer,TypeNum).getChartPanel());//添加柱形图

详细教程见:http://www.yiibai.com/swing/home.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值