//声明一个窗体
frame frame = new frame(s);
//设置窗体可见
frame.setVisible(true);
//设置窗体大小
frame.setSize(400,300);
//设置窗体颜色
Color c = new Color(114, 114, 114);
frame.setBackground(c);
//frame.setBackground(new Color(114, 114, 114));
//设置弹窗的弹出的位置
frame.setLocation(10,10);
//设置窗口大小不可变,默认是可变的
frame.setResizable(false);
public class Test {
public static void main(String[] args) {
Myframe frame1 = new Myframe(100,100,200,200,Color.black);
Myframe frame2 = new Myframe(300,100,200,200,Color.BLUE);
Myframe frame3 = new Myframe(100,300,200,200,Color.CYAN);
Myframe frame4 = new Myframe(300,300,200,200,Color.darkGray);
}
}
class Myframe extends frame{
static int id = 0;
public Myframe(int x, int y, int w, int h, Color c) {
super("Java"+(++id));
setBackground(c);
setVisible(true);
setBounds(x,y,w,h);
}
}
2、panel
将panel加入frame中,对panel进行操作,
在frame中使用panel要先设置frame布局为NULL
public class TestPanel {
public static void main(String[] args) {
Panel panel = new Panel();
frame frame = new frame();
//设置布局
frame.setLayout(null);
frame.setBounds(100,100,300,300);
frame.setVisible(true);
panel.setBounds(100,100,100,100);
Color c = new Color(0x2E2EC1);
panel.setBackground(c);
frame.add(panel);
//关闭窗口
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
//frame.add(panel);
}
}
3、布局
流式布局
package com.wang.layout;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestFloat {
public static void main(String[] args) {
frame frame = new frame();
frame.setBounds(100,100,300,300);
//流式布局,一行不够到下一行,铺
//居中
frame.setLayout(new FlowLayout(FlowLayout.CENTER));
//frame.setLayout(new FlowLayout(FlowLayout.LEFT));
//frame.setLayout(new FlowLayout(FlowLayout.RIGHT));
frame.setVisible(true);
Button button1 = new Button("button1");
Button button2 = new Button("button2");
Button button3 = new Button("button3");
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(1);
}
});
}
}
一行放不下会转到下一行
东西南北中
package com.wang.layout;
import java.awt.*;
public class TestBoarderLayout {
public static void main(String[] args) {
frame frame = new frame("BorderLayout");
frame.setBounds(100,100,300,300);
frame.setVisible(true);
Button east = new Button("east");
Button west = new Button("west");
Button south = new Button("south");
Button north = new Button("north");
Button center = new Button("center");
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);
}
}
必须有个中间的那块,不然会留出来
表格布局
public class TestGridLayout {
public static void main(String[] args) {
frame frame = new frame();
frame.setBounds(100,100,300,300);
frame.setVisible(true);
//表格布局,3行2列
frame.setLayout(new GridLayout(3,2));
//大小自动填充
frame.pack();
Button button1 = new Button("btn1");
Button button2 = new Button("btn2");
Button button3 = new Button("btn3");
Button button4 = new Button("btn4");
Button button5 = new Button("btn5");
Button button6 = new Button("btn6");
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.add(button4);
frame.add(button5);
frame.add(button6);
}
4、事件监听package com.wang.listener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestActionListener {
public static void main(String[] args) {
frame frame = new frame();
frame.setBounds(100,100,100,100);
frame.setVisible(true);
Button button = new Button();
MyActionListener myActionListener = new MyActionListener();
button.addActionListener(myActionListener);
frame.add(button);
//关闭窗口的两种方法1、
// frame.addWindowListener(new WindowAdapter() {
// @Override
// public void windowClosing(WindowEvent e) {
// System.exit(1);
// }
// });
// 2、
windowClose(frame);
}
public static void windowClose(frame frame){
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(1);
}
});
}
}
class MyActionListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("wwwwwww");
}
}
两个按钮一个监听事件
package com.wang.listener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestActionTwo {
public static void main(String[] args) {
frame frame = new frame();
frame.setBounds(100,100,100,100);
frame.setVisible(true);
frame.setLayout(new GridLayout(2,1));
Button button1 = new Button("start");
Button button2 = new Button("stop");
button1.setActionCommand("start");
button2.setActionCommand("stop");
MyActionListener1 myActionListener = new MyActionListener1();
button1.addActionListener(myActionListener);
button2.addActionListener(myActionListener);
frame.add(button1);
frame.add(button2);
windowClose(frame);
}
public static void windowClose(frame frame){
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(1);
}
});
}
}
//两个按钮一个监听事件
class MyActionListener1 implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand());
}
}
5、文本框
package com.wang.listener;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class TestText {
public static void main(String[] args) {
Myframe myframe = new Myframe();
windowClose(myframe);
}
public static void windowClose(Myframe frame){
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(1);
}
});
}
}
class Myframe extends frame{
public Myframe() throws HeadlessException {
TextField textField = new TextField();
add(textField);
//监听文本框输入的字符
MyActionListener3 myActionListener3 = new MyActionListener3();
//按enter键会触发
textField.addActionListener(myActionListener3);
textField.setEchoChar('*');
setVisible(true);
pack();
}
}
class MyActionListener3 implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//获得资源,返回一个对象
TextField textField = (TextField) e.getSource();
System.out.println(textField.getText());
textField.setText("");
}
}
实现简易计算器
package com.wang.listener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestCalc {
public static void main(String[] args) {
new Calculator().loadframe();
}
}
//计算器类
class Calculator extends frame{
TextField num1,num2,num3;
public void loadframe() {
//文本框
num1 = new TextField(10);//字符数,也是长度
num2 = new TextField(10);
num3 = new TextField(10);
//一个按钮
Button button = new Button("=");
MyCalcultorListener myCalcultorListener = new MyCalcultorListener(this);
button.addActionListener(myCalcultorListener);
//一个标签
Label label = new Label("+");
setLayout(new FlowLayout());
add(num1);
add(label);
add(num2);
add(button);
add(num3);
setVisible(true);
pack();
//关闭
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(1);
}
});
}
}
//监听类
class MyCalcultorListener implements ActionListener{
Calculator c = null;
//传递参数
public MyCalcultorListener(Calculator c) {
this.c = c;
}
@Override
public void actionPerformed(ActionEvent e) {
//1、获得加数和被加数,并计算
int x = Integer.parseInt(c.num1.getText());
int y = Integer.parseInt(c.num2.getText());
int z = x+y;
//返回结果
c.num3.setText(""+z);
}
}
6、画笔
package com.wang.paint;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class TestGraphy {
public static void main(String[] args) {
new MyPaint().loadframe();
}
}
class MyPaint extends frame{
public void loadframe(){
setBounds(200,200,500,400);
setVisible(true);
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(1);
}
});
}
@Override
public void paint(Graphics g) {
g.setColor(Color.red); //画笔颜色
g.drawOval(50,50,50,50); //空心圆
g.fillOval(200,50,50,50);//实心圆
//画笔用完,要恢复为原来的颜色
}
}
7、鼠标事件
package com.wang.paint;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.Iterator;
public class TestMouseListener {
public static void main(String[] args) {
new Myframe().loadframe();
}
}
class Myframe extends frame{
ArrayList points; //用于存放点
public void loadframe(){
setBounds(100,100,500,400);
setVisible(true);
points = new ArrayList();
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(1);
}
});
addMouseListener(new MyMouseListener());
}
//画笔将数组照中的点全部画出来
@Override
public void paint(Graphics g) {
Iterator iterator = points.iterator();
while(iterator.hasNext()){
Point point = (Point) iterator.next();
g.setColor(Color.blue);
g.fillOval(point.x,point.y,10,10);
}
}
public void addPoint(Point point) {
points.add(point);
}
}
class MyMouseListener extends MouseAdapter{
@Override
public void mouseClicked(MouseEvent e) {
//因为是当前的窗口,所以返回的对象为Myframe类型
Myframe frame = (Myframe) e.getSource();
frame.addPoint(new Point(e.getX(),e.getY()));
//每次点都要重画
frame.repaint();//刷新
}
}
8、窗口监听事件
和窗口关闭的处理是一样的,只是具体实现的不同
9、键盘监听class Keyframe extends frame{
public Keyframe() throws HeadlessException {
setBounds(100,100,400,300);
setVisible(true);
this.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
if(keyCode == KeyEvent.VK_UP){
System.out.println("上键");
}
}
});
}
}
SWING
1、Jframe
package com.wang.swing;
import javax.swing.*;
public class TestJframe {
//初始化
public void init(){
//顶级窗口
Jframe frame = new Jframe("Jframe窗口");
frame.setVisible(true);
frame.setBounds(100,100,500,400);
//设置文字
JLabel label = new JLabel("JAVA");
frame.add(label);
//关闭窗口
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestJframe().init();
}
}
2、JDialog
package com.wang.swing;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class TestDialog extends Jframe {
public void init(){
setBounds(200,200,400,300);
setVisible(true);
Container container = getContentPane();
JButton jButton = new JButton("按钮");
jButton.setBounds(0,0,100,30);
container.add(jButton);
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new MyDialog();
}
});
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestDialog().init();
}
}
class MyDialog extends JDialog{
public MyDialog(){
//需要设置可见
setVisible(true);
setBounds(300,300,300,200);
Container container = getContentPane();
//设为绝对定位
container.setLayout(null);
//弹窗不需要设置关闭等,因为,继承的类中已经实现了
JLabel label = new JLabel("This is my Dialog!");
//JLabel要设置大小,不然不会显示出来
label.setBounds(0,0,300,200);
container.add(label);
}
}
layui可以优化弹窗等
3、图片package com.wang.swing;
import javax.swing.*;
import java.awt.*;
import java.net.URL;
public class TestIcon extends Jframe{
public TestIcon() {
//一个标签
JLabel label = new JLabel("ImageIcon");
//找到地址
URL url = TestIcon.class.getResource("1.PNG");
//把地址给一个图片类中
ImageIcon imageIcon = new ImageIcon(url);
//再将图片的类放到标签中
label.setIcon(imageIcon);
//居中布局
label.setHorizontalAlignment(SwingConstants.CENTER);
Container container = getContentPane();
container.add(label);
setVisible(true);
setBounds(100,100,500,400);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestIcon();
}
}
加载的图片要放到out文件(src上面)中,不然容易出现空指针异常
4、JPanel面板
package com.wang.swing;
import javax.swing.*;
import java.awt.*;
public class TestJPanel extends Jframe {
public TestJPanel() {
Container container = this.getContentPane();
//后面两个参数表示的是间隔
container.setLayout(new GridLayout(2,2,10,10));
JPanel panel1 = new JPanel(new GridLayout(1,2));
JPanel panel2 = new JPanel(new GridLayout(1,2));
JPanel panel3 = new JPanel(new GridLayout(1,2));
JPanel panel4 = new JPanel(new GridLayout(1,2));
panel1.add(new JButton("1"));
panel1.add(new JButton("1"));
panel2.add(new JButton("2"));
panel2.add(new JButton("2"));
panel3.add(new JButton("3"));
panel3.add(new JButton("3"));
panel4.add(new JButton("4"));
panel4.add(new JButton("4"));
container.add(panel1);
container.add(panel2);
container.add(panel3);
container.add(panel4);
setVisible(true);
setBounds(100,00,400,300);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestJPanel();
}
}
5、滚轮
package com.wang.swing;
import javax.swing.*;
import java.awt.*;
public class TestJSroll extends Jframe {
public TestJSroll() throws HeadlessException {
Container container = this.getContentPane();
setBounds(100,100,200,100);
setVisible(true);
textarea textarea = new textarea("this is good");
JScrollPane scrollPane = new JScrollPane(textarea);
container.add(scrollPane);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestJSroll();
}
}
6、按钮上加图片
package com.wang.swing;
import javax.swing.*;
import java.awt.*;
import java.net.URL;
public class TestJButton extends Jframe {
public TestJButton(){
Container container = getContentPane();
//把图片变为图标
URL url = TestJButton.class.getResource("1.PNG");
Icon icon = new ImageIcon(url);
//把这个图片放到按钮上
JButton button = new JButton();
button.setIcon(icon);
//提示文本
button.setToolTipText("图片按钮");
container.add(button);
setVisible(true);
setBounds(100,100,300,200);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestJButton();
}
}
7、单选框,多选框
extends Jframe {
public TestJButton2(){
Container container = getContentPane();
//把图片变为图标
URL url = TestJButton.class.getResource("1.PNG");
Icon icon = new ImageIcon(url);
//单选框
JRadioButton radioButton1 = new JRadioButton("JR1");
JRadioButton radioButton2 = new JRadioButton("JR1");
JRadioButton radioButton3 = new JRadioButton("JR1");
//将这些按钮加入一个组里,实现单选
ButtonGroup buttonGroup = new ButtonGroup();
buttonGroup.add(radioButton1);
buttonGroup.add(radioButton2);
buttonGroup.add(radioButton3);
container.add(radioButton1,BorderLayout.NORTH);
container.add(radioButton2,BorderLayout.CENTER);
container.add(radioButton3,BorderLayout.SOUTH);
setVisible(true);
setBounds(100,100,300,200);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestJButton2();
}
}
单选框注意要加上组,
多选框
package com.wang.swing;
import javax.swing.*;
import java.awt.*;
import java.net.URL;
public class TestJButton3 extends Jframe {
public TestJButton3(){
Container container = getContentPane();
//把图片变为图标
URL url = TestJButton.class.getResource("1.PNG");
Icon icon = new ImageIcon(url);
//多选框
JCheckBox checkBox1 = new JCheckBox("1");
JCheckBox checkBox2 = new JCheckBox("2");
JCheckBox checkBox3 = new JCheckBox("3");
container.add(checkBox1,BorderLayout.NORTH);
container.add(checkBox2,BorderLayout.CENTER);
container.add(checkBox3,BorderLayout.SOUTH);
setVisible(true);
setBounds(100,100,300,200);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestJButton3();
}
}
8、列表
下拉列表
package com.wang.swing;
import javax.swing.*;
import java.awt.*;
import java.util.ConcurrentModificationException;
public class TestCombobox1 extends Jframe {
public TestCombobox1(){
Container container = getContentPane();
JComboBox comboBox = new JComboBox();
comboBox.addItem(null);
comboBox.addItem("正在");
comboBox.addItem("结束");
//返回项数
System.out.println(comboBox.getSelectedIndex());
//返回内容
System.out.println(comboBox.getSelectedItem());
container.add(comboBox);
setVisible(true);
setBounds(100,100,500,400);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestCombobox1();
}
}
列表框
package com.wang.swing;
import javax.swing.*;
import java.awt.*;
import java.util.Vector;
public class TestCombobox2 extends Jframe {
public TestCombobox2(){
Container container = getContentPane();
//生成列表的内容
// String[] contents = {"1","2","3"};
Vector contents = new Vector();
//列表中需要放入的内容
JList list = new JList(contents);
contents.add("1");
contents.add("2");
contents.add("3");
container.add(list);
setVisible(true);
setBounds(100,100,500,400);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestCombobox2();
}
}
应用场景
下拉列表,选择地区,或者一些单个选项列表,展示信息,一般是动态扩容 9、文本框
文本框、密码框、文本域
package com.wang.swing;
import javax.swing.*;
import java.awt.*;
import java.util.Vector;
public class TestText1 extends Jframe {
public TestText1(){
Container container = getContentPane();
//密码框
JPasswordField passwordField = new JPasswordField();
passwordField.setEchoChar('*');
container.add(passwordField);
//
// TextField textField1 = new TextField("hello");
// TextField textField2 = new TextField("world",20);
// container.add(textField1,BorderLayout.NORTH);
// container.add(textField2,BorderLayout.CENTER);
setVisible(true);
setBounds(100,100,500,400);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new TestText1();
}
}



