Java中Swing编程(单JFrame多JSplitPane)

来源:互联网 发布:淘宝助理二次验证失败 编辑:程序博客网 时间:2024/06/04 23:22

笔者今日才自学到Swing编程,终于摆脱了控制台有点小激动,今天编了一个模拟QQ的聊天窗口的小程序贴在这里供大家批评指正。

说明:

1.这只是实现了这个界面,其中按钮(除了滚动条)都没有深层的作用;

2.理解时,一定要把JSplitPane看作是一个可以被分割的容器,而不能把它看作是一个分隔符;

 

下面是效果图:

 
/** * 演示QQ聊天窗口的布局管理 * 重点思想:一定要把JSplitPane看作是一个可以被分隔的容器,而不是一个分隔符组件 */package com.swing;import java.awt.*;import javax.swing.*;public class QQChatWin extends JFrame {//DefinitionJSplitPane jsplit1, jsplit2;JTextArea jta1;JLabel jlb;JList jlist;JScrollPane jsp1,jsp2;JPanel jp1,jp3;JComboBox jcb;JTextField jtf;JButton jb;public static void main(String[] args) {QQChatWin qc = new QQChatWin();}public QQChatWin(){//Creationjta1 = new JTextArea();jlb = new JLabel(new ImageIcon("images/beauty.jpg"));//初始化右侧JList内容-->好友列表String []friends = {"Hanson","Mark","Leo","Joshua","Blade","Howland","Baker","Simon"};jlist = new JList(friends);jlist.setVisibleRowCount(4);//设置滚动条jsp1 = new JScrollPane(jta1);jsp2 = new JScrollPane(jlist);String []chatter = {"本拉登","小布什","奥巴马"};jcb = new JComboBox(chatter);jtf = new JTextField(12);jb = new JButton("发送");jp1 = new JPanel();//jp2 = new JPanel();jp3 = new JPanel();//先创建分割窗口,明确分割方式,但先不设置组件jsplit1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT);jsplit2 = new JSplitPane(JSplitPane.VERTICAL_SPLIT);//设置分割窗口可选显示/隐藏jsplit1.setOneTouchExpandable(true);jsplit2.setOneTouchExpandable(true); //Layoutthis.setLayout(new BorderLayout());//左下窗口布局jp3.add(jcb);jp3.add(jtf);jp3.add(jb);//左侧窗口布局,因JPanel默认是流式布局,所以要指定一下布局方式jp1.setLayout(new BorderLayout());jp1.add(jsp1,BorderLayout.CENTER);jp1.add(jp3,BorderLayout.SOUTH);//右侧窗口上//jp2.add(jlb,BorderLayout.NORTH);//jp2.add(jsp2,BorderLayout.SOUTH);//这部分一定要写在组件都初始化完成之后jsplit1.setLeftComponent(jp1);jsplit2.setTopComponent(jlb);jsplit2.setBottomComponent(jsp2);jsplit1.setRightComponent(jsplit2);//因为主容器就是一个jsplit1,而jsplit2只是jsplit1的右半部分,故只需要将jsplit1加入到JFrame即可this.add(jsplit1);//set configurationthis.setTitle("QQ聊天");this.setSize(500,350);this.setLocation(200,100);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setResizable(false);//设置标题栏的小图标,小企鹅this.setIconImage((new ImageIcon("images/qq.GIF")).getImage());//Displaythis.setVisible(true);//这句话应该写在setVisible后面才生效,笔者在网上查的资料,也实验了一下jsplit1.setDividerLocation(0.7);}}


 

 

0 0
原创粉丝点击