Swing编程方面步骤

来源:互联网 发布:宝贝收藏软件 编辑:程序博客网 时间:2024/05/22 18:09

Swing编程方面步骤

(1)自定义类文件,必须继承JFrame框架

public class TestLayout extends JFrame

{

}

(2) 添加主函数,并调用类的构造函数

public class TestSwing extends JFrame

{

public static void main(String[] args)

{

  new TestSwing();

}

}

(3)添加成员变量(自定义组件)  

(4)添加构造函数

在构造函数中,一般步骤如下:

A 创建组件

B 添加组件

C 添加事件处理模型(可选)

D 拆分窗格(可选)

E 添加布局管理器(可选)

F 设置容器的基本属性

G 设置框架标题(可选)

H 设置框架图标(可选)

I 设置框架大小(可选)

J 设置框架初始位置,默认是屏幕最左上角(可选)

K 设置框架默认的关闭操作(必选)

I 设置框架可见(必选)

例子:

(1).文本区域JTextArea一般和JScrollPane联用。


package com.testswing;import java.awt.BorderLayout;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JComboBox;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;public class TestJTextArea extends JFrame{//定义组件JTextArea mTextArea;JScrollPane jsp;JPanel jpl;JComboBox jcb;JTextField jtf;JButton jb;public static void main(String[] args){new TestJTextArea();}public TestJTextArea(){//创建组件mTextArea = new JTextArea();jsp = new JScrollPane(mTextArea);//为文本区域设置带滚动条jpl = new JPanel();String[] chatter = {"毛二","蘑菇","炮灰"};jcb = new JComboBox(chatter);//为下拉列表设置选项jtf = new JTextField(10);jb = new JButton("发送");//为按钮添加说明//添加组件jpl.add(jcb);jpl.add(jtf);jpl.add(jb);this.add(jpl);this.add(jpl,BorderLayout.SOUTH);//设置容器的基本属性this.setTitle("测试JTextAreaBY毛二");this.setIconImage(new ImageIcon("1_u012270113.jpg").getImage());this.setSize(300,200);this.setDefaultCloseOperation(3);this.setVisible(true);}}

(2)边界处理


package com.testswing;import java.awt.BorderLayout;import javax.swing.JButton;import javax.swing.JFrame;public class TestLayout extends JFrame{//定义组件JButton jb1,jb2,jb3,jb4,jb5;public static void main(String[] args){TestLayout my = new TestLayout();}public TestLayout(){//创建组件jb1 = new JButton("左");jb2 = new JButton("右");jb3 = new JButton("上");jb4 = new JButton("下");jb5 = new JButton("中");//添加组件this.add(jb1,BorderLayout.WEST);this.add(jb2,BorderLayout.EAST);this.add(jb3,BorderLayout.NORTH);this.add(jb4,BorderLayout.SOUTH);this.add(jb5,BorderLayout.CENTER);//设置窗口属性this.setTitle("边界处理By毛二");//基础属性this.setSize(300,400);//设置大小,按像素this.setLocation(500,500);//设置初始位置,默认是屏幕最左上角this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置默认的关闭操作,不然java虚拟机还没有关闭.写不写JFrame均可以this.setVisible(true);//让它显示,位置可变}}

(3)流式布局


package com.testswing;import java.awt.BorderLayout;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JPanel;public class TestPannel extends JFrame{//定义组件JPanel[] jp;JButton[] jb;public static void main(String[] args){new TestPannel();}public TestPannel(){//创建组件jp = new JPanel[2];jp[0] = new JPanel();jp[1] = new JPanel();jb = new JButton[6];jb[0] = new JButton("红色");jb[1] = new JButton("绿色");jb[2] = new JButton("黄色");jb[3] = new JButton("橙色");jb[4] = new JButton("青色");jb[5] = new JButton("蓝色");//设置布局。JPanel默认就是流式布局jp[0].add(jb[0]);jp[0].add(jb[1]);jp[1].add(jb[2]);jp[1].add(jb[3]);jp[1].add(jb[4]);//把JPanel和其他组件都加入JFramethis.add(jp[0],BorderLayout.NORTH);this.add(jb[5],BorderLayout.CENTER);this.add(jp[1],BorderLayout.SOUTH);//设置可视化和默认关闭this.setTitle("Panel布局管理混合By毛二");this.setSize(200,200);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setVisible(true);}}

(4)窗口分割JSplitPane


package com.testswing;import javax.swing.ImageIcon;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JList;import javax.swing.JSplitPane;public class TestJSplitPane extends JFrame{//定义组件JSplitPane jsp;JList jList;JLabel jLabel;public static void main(String[] args){new TestJSplitPane();}public TestJSplitPane(){//创建组件String[] messages = {"one","two","three"};jList = new JList(messages);ImageIcon image = new ImageIcon("1_u012270113.jpg");image.setImage(image.getImage().getScaledInstance(200, 200, 300));jLabel = new JLabel(image);//拆分窗格jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,jList,jLabel);jsp.setOneTouchExpandable(true);//设置 oneTouchExpandable 属性的值,要使 JSplitPane 在分隔条上提供一个 UI 小部件来快速展开/折叠分隔条,此属性必须为 true。//设置布局管理器//添加组件this.add(jsp);this.setSize(400,300);this.setTitle("测试窗口分割By毛二");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setLocation(200, 400);this.setVisible(true);}}

(5)事件处理模型,下例是按钮触发的监听事件,一般采取匿名类的方式如下例子,直接用一般内部类的方式见综合例子(6).如图点击“测试”出现”请输入”:



package com.wjl;import java.awt.FlowLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JOptionPane;import javax.swing.JTextField;public class SwingTest extends JFrame{JButton b;JTextField tf;public static void main(String[] args){SwingTest st = new SwingTest();}public SwingTest(){b = new JButton("测试");this.add(b);tf = new JTextField();this.add(tf);this.setLayout(new FlowLayout());this.setBounds(200, 100, 300, 150);this.setVisible(true);b.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){String s = JOptionPane.showInputDialog("请输入: ");tf.setText(s);}});  }}        

(6)综合例子实现一个简单的http浏览器。控制台下运行,出现下面图一,报错是因为我在eclipse中编写,有添加包。而编译时没有在指定目录下编译。通过 javac -d . xxx.java可以将编译文件直接打包生成,不过运行时不能偷懒,还是得老老实实java 包名.xxx。如果输入正确的网址后出现图二,否则出现图三。

                 图一

                     图二

                   图三

代码如下:

package com.wjl;import java.awt.*;import java.awt.event.*;import java.net.URL;import javax.swing.*;public class HTTPBrowserDemo extends JFrame{JTextField jtfAddress; //输入html文件地址或网址JButton jbGo; //转到文件按钮JTextPane jtpShow; //显示文件JLabel jlInfo; //提示信息public HTTPBrowserDemo(){super("html浏览器"); //调用父类构造函数jtfAddress=new JTextField(20); //实例化地址输入框jbGo=new JButton("转到"); //实例化转向按钮jtpShow=new JTextPane(); //实例化显示内容框jlInfo=new JLabel(); //实例化信息提示标签JPanel panel=new JPanel(); //实例化面板panel.add(new JLabel("地址")); //增加组件到面板上panel.add(jtfAddress);panel.add(jbGo);JScrollPane jsp=new JScrollPane(jtpShow);//实例化滚动窗体Container container=getContentPane(); //得到容器container.add(panel,BorderLayout.NORTH); //增加组件到容器上container.add(jsp,BorderLayout.CENTER);container.add(jlInfo,BorderLayout.SOUTH);jbGo.addActionListener(new ShowHTMLListener());  //事件处理,发生按钮点击时显示页面内容jtfAddress.addActionListener(new ShowHTMLListener());setSize(350,280);  //设置窗口尺寸setVisible(true);  //设置窗口可视setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //关闭窗口时退出程序}class ShowHTMLListener implements ActionListener { //显示页面内容事件处理public void actionPerformed(ActionEvent event) {try{jlInfo.setText("正在连接...");  //显示提示信息URL address=new URL(jtfAddress.getText());  //得到HTML页面的URL地址jtpShow.setPage(address); //设置显示页面jlInfo.setText("完成");}catch (Exception ex){jlInfo.setText("连接出错");ex.printStackTrace(); //输出出错信息}}}public static void main(String[] args){new HTTPBrowserDemo();}}


0 0
原创粉丝点击