GUI
在Swing组件中大多数GUI组件都是Component的直接子类或者间接子类
常用的Swing组件的概述
JButton 代表Swing按钮,按钮可以带有一些汉字或者图片
JLabel 代表Swing的标签组件
JTextArea 代表Swing中的文本区域
JOptionPane 代表Swing的对话框
JTextFiled 代表文本框
还有很多
常用的Swing窗体
JFranme窗体
这个窗体是一个容器,他是Swing程序中各个组件的载体,用它来承载这些组件,是一个承载着组件的容器。
在开发的时候,继承JFrame类来创建一个窗体,并且向这个窗体中添加组件,使之完整,同时为这些组件设置必要的事件。
JFrame类拥有最大化最小化以及关闭等按钮,这里的窗体同样继承这些按钮。
具体使用方法
package 作业;
import javax.swing.*;
import java.awt.*;
public class demo6 extends JFrame{
public static void main(String[] args) {
new demo6().creatJFranme("一个新的窗体");
}
public void creatJFranme(String title) {
JFrame jf = new JFrame(title);//实例化一个对象
Container cn = jf.getContentPane();//获取一个容器
JLabel jl = new JLabel("这是一个标签");//创建一个标签
//System.out.println(jl.getHorizontalTextPosition());
//jl.setVisible(true);//设置窗口可视
//cn.setLocation(200,200);
jl.setHorizontalAlignment(SwingConstants.CENTER);
cn.setBackground(Color.cyan);//首先设置你的背景颜色
cn.add(jl);//添加你的标签
cn.setSize(200,200);
//cn.isVisible();
cn.setVisible(true);
//cn.add(jf);
//System.out.println(cn.isVisible());
jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
在运用Frame类的时候,遇到一个问题,不能关闭程序
处理时需要监听鼠标点击
当点击关闭的时候,结束程序
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
//结束程序
System.exit(0);
}
});
//这段代码就是用来监听窗口关闭的时候需要做的事情
面板Panel
我个人理解
这个面板也是容器中的组件
将它添加到JFranme中
让他可以自己显示
用法如下
public class demo{
public static void main(String[] args) {
Frame frame = new Frame();
Panel panel = new Panel();
frame.setLayout(null);//这句代码就是设置布局
frame.setBounds(300,300,500,500);//这句代码是为它设置坐标和大小
frame.setBackground(Color.cyan);
frame.setVisible(true);//设置可见性
panel.setBounds(50,50,400,400);
panel.setBackground(new Color(193, 15, 60));
//为这个panel面板设置坐标,这个坐标相对于frame
frame.add(panel);//然后将面板添加到容器中
}
}
小总结
setBackground(color);//背景颜色的设定
setBounds(x,y,w,h);//容器大小的设置
setVisible(true);//设置可见性
setSize(a,b);//设置大小
setLocation(x,y);//设置弹出的位置
布局
public class demo2 {
public static void main(String[] args) {
Frame frame = new Frame();
Button button1 = new Button("button1");
Button button2 = new Button("button2");
Button button3 = new Button("button3");
Button button4 = new Button("button4");
Button button5 = new Button("button5");
Button button6 = new Button("button6");
//设置为流式布局
//frame.setLayout(new FlowLayout());
//frame.setLayout(new FlowLayout(FlowLayout.LEFT));
frame.setLayout(new FlowLayout(FlowLayout.RIGHT));//布局影响按钮
//个人理解为 它位于你定义的位置,集中在一块
frame.setSize(200,200);
//把按钮添加上去
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.add(button4);
frame.add(button6);
frame.add(button5);//添加顺序影响按钮位置
frame.setVisible(true);
//还有东南西北中的格局和表格格局
//具体操作方法和此格局类似
//东南西北中的格局
//frame.add(east,BorderLayout.EAST);
//frame.add(west,BorderLayout.WEST);
//frame.add(south,BorderLayout.SOUTH);
//frame.add(north,BorderLayout.NORTH);
//frame.add(center,BorderLayout.CENTER);
//表格
//frame.setLayout(new GridLayout(3,2));//先行后列。这个表示为3行2列
//frame.add(button);
}
}
监听功能
就像上面所述的关闭窗口功能就是一个监听,监听的是X的状态。
public class demo3{
public static void main(String[] args) {
Frame frame = new Frame();
Button button = new Button();
//因为,addActionListener()需要一个 ActionListener,所以我们需要构造一个 ActionListener
MyActionListener myActionListener = new MyActionListener();
button.addActionListener(myActionListener);
frame.add(button,BorderLayout.CENTER);//位于中间,这个是东南西北中的布局
frame.pack();//调整窗口的大小,使其适应组件的大小和布局。
windowClose(frame); //关闭窗口
frame.setVisible(true);
}
//这里定义关闭窗口的方法,作用相同
private static void windowClose(Frame frame){
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
//事件监听,监听的就是这个事件本身
class MyActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("aaabbb");
}
}
监听输入框TextField监听
public class demo4 {
public static void main(String[] args) {
new MyFrame();
}
}
class MyFrame extends Frame{
public MyFrame(){
TextField textField = new TextField();
add(textField);
//监听这个文本框输入的文字
MyActionListener2 myActionListener2 = new MyActionListener2();
//按下enter 就会触发这个输入框的事件
textField.addActionListener(myActionListener2);
//设置替换编码
textField.setEchoChar('*');
setVisible(true);
pack();
}
}
class MyActionListener2 implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
TextField field = (TextField) e.getSource(); //获得一些资源,返回的一个对象
System.out.println(field.getText()); //获得输入框的文本
field.setText(""); //null ""
}
}
还有很多监听方法和按钮之类的组合。
总结
Frame是一个顶级窗口,panel可以存在在它里面
大小定义,背景颜色定义,出现的位置,可见性,监听关闭功能