1、创建窗口对象
import javax.swing.*; //
public class J10 extends Jframe { //Jframe是javax.swing包中用来创建窗口的类
J10(){
setTitle("登录界面"); //设置窗体标题名称
setSize(400,150); //设置窗口宽度与长度
setVisible(true);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new J10();
}
}
运行结果:
2、创建对话框对象
Dialog是用来创建对话框窗口的类,它和普通窗口最大的区别就是对话框是依附在某个窗口上的,一旦它所依附的窗口
关闭了,对话框也要随着关闭。
import javax.swing.*;
public class exp2 extends JDialog {
public exp2(Jframe f,String s) {
super(f,s);//调用父类JDialog的构造方法,确定依附的窗体、确定对话框窗口标题
setLayout(null); //关闭布局管理器 关闭后可以自定义精确定位对话框位置与大小
setBounds(30,30,200,100);//精确定位对话框窗口的位置与大小
setVisible(true);//设置对话框窗口是否可见
}
public static void main(String[] args) {
// TODO Auto-generated method stub
J10 f =new J10(); //JDialog 对话框必须依附在窗口上
new exp2 (f,"这是一个对话框窗口");
}
}
J10是创建的上一个类。可以看出java语言使用的优点,可以使用已创建的系统类和自定义类
运行结果:
3、含有面板对象的窗口
JPanel类是无边框的容器,是中间容器必须依附在容器框架上
import javax.swing.*;
import java.awt.Color;
public class exp_3 extends J10{
public exp_3() {
JPanel p=new JPanel(); //创建面板对象p
p.setLayout(null); //关闭面板布局管理器
p.setBackground(Color.pink); //面板背景设置为粉色
add(p); //将面板p加入到窗口
JPanel p1 =new JPanel(); //面板
p1.setBounds(50,50,200,200);//精确面板p1在p中位置大小
p1.setBackground(Color.black);
p.add(p1);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new exp_3 ();
}
}
通过p.setLayout(null)方法可以关闭面板对象p上的默认布局管理器,使用setBounds(x,y,w,h)方法精确设置位置与大小
运行结果:
4、分隔面板 JSplitPane
import java.awt.*;
import javax.swing.*;
public class exp_4 extends Jframe{
public static void main(String[] args) {
// TODO Auto-generated method stub
exp_4 f = new exp_4();
f.setVisible(true); }
public exp_4() {
setTitle("分隔面板界面");setSize(450,300);
JSplitPane fg1 =new JSplitPane();//创建水平方向分隔面板;
fg1.setBackground(Color.pink);
fg1.setDividerLocation(80);//分隔条左侧的宽度为60像素
//使用边界布局管理器
add("Center", fg1); //分隔条添加到窗体中间
fg1.setLeftComponent(new JLabel("左方"));
add("East", new JButton("东")); //在窗体右方添加一个按钮组件
add("West", new JButton("西"));//在左方添加一个按钮组件
add("North", new JButton("北"));//在上方添加一个按钮组件
add("South", new JButton("南"));//在下方添加一个按钮组件
JSplitPane fg2=new JSplitPane(JSplitPane.VERTICAL_SPLIT);//垂直方向分隔面板
fg2.setDividerLocation(60); //分隔条上方的高度为60像素
fg2.setDividerSize(8);//分隔条宽度为8像素
fg2.setoneTouchExpandable(true); //提供UI小部件,可以上下折叠
fg2.setContinuousLayout(true); //在调整分隔条位置时面板的重绘方式为连续绘制
fg1.setRightComponent(fg2);
fg2.setLeftComponent(new JLabel("右上")); //在垂直面板上方添加一个标签组件 在JSplitpane中没有设置up和down 所以实现垂直方向分隔面板时默认left为up,right为down
fg2.setRightComponent(new JLabel("右下"));//在垂直面板下方添加一个标签组件
}
}
运行结果:
5、选项卡面板
import java.awt.*;
import java.net.*;
import javax.swing.*;
import javax.swing.event.*;
public class exp10_5 extends Jframe{
public static void main(String[] args) {
exp10_5 frame=new exp10_5();
frame.setVisible(true); }
public exp10_5() { //构造函数
super(); //调用父方法
setFocusCycleRoot(true); //内容循环
setTitle("选项卡面板"); setBounds(100,100,500,375);
final JTabbedPane tabbedPane =new JTabbedPane();//设置选项卡标签的布局方式
tabbedPane.setTabLayoutPolicy(JTabbedPane.SCROLL_TAB_LAYOUT); //滚动条
tabbedPane.addChangeListener(new ChangeListener() { //事件源.监听器(匿名内部类)
public void stateChanged(ChangeEvent e) {
//获得被选中选项卡的索引
int selectedIndex=tabbedPane.getSelectedIndex();
//获得指定索引的选项卡标签
String title = tabbedPane.getTitleAt(selectedIndex);
System.out.println(title); }
});
add(tabbedPane,BorderLayout.CENTER);
URL resource = exp10_5.class.getResource(""); //获得图片路径,
System.out.println(resource);//输出resource的路径
ImageIcon imageIcon=new ImageIcon(resource);
final JLabel tabLabelA=new JLabel();
tabLabelA.setText("选项卡A");
tabbedPane.addTab("选项卡A", imageIcon,tabLabelA,"单击查看选项卡A");
final JLabel tabLabelB=new JLabel();
tabLabelB.setText("选项卡b");
tabbedPane.addTab("选项卡B", imageIcon,tabLabelB,"单击查看选项卡B");
final JLabel tabLabelC=new JLabel();
tabLabelC.setText("选项卡C");
tabbedPane.addTab("选项卡C", imageIcon,tabLabelC,"单击查看选项卡C");
tabbedPane.setSelectedIndex(2); //设置索引为2 的选项卡被选中
tabbedPane.setEnabledAt(0, false); //设置索引为0的选项卡不可用
}
}
运行结果:
关于 URL resource = exp10_5.class.getResource(""); //获得图片路径,
System.out.println(resource);//输出resource的路径
当“”中为空时我们通过输出能知道默认的路径,然后在路径的文件夹下放入自己要用的图片,一定要注意图片格式,图片名.(jpg或者png)如果代码中写的格式和图片对不上就会获取失败,获取到后
控制台第一行为路径,找到此路径把一张图片放入改文件夹,并把图片名填入代码
事件、事件源、事件监听器
(1)创建监听类
(2)监听类实现对象
(3)将监听类与事件源关联绑定



