Swing编程方面步骤

时间:2023-01-28 00:07:58

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联用。

Swing编程方面步骤


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)边界处理

Swing编程方面步骤


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)流式布局

Swing编程方面步骤

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和其他组件都加入JFrame
this.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

Swing编程方面步骤


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).如图点击“测试”出现”请输入”:

Swing编程方面步骤


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。如果输入正确的网址后出现图二,否则出现图三。

Swing编程方面步骤

                 图一

Swing编程方面步骤

                     图二

Swing编程方面步骤

                   图三

代码如下:

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();
}
}