系列文章目录
提示:阅读本章之前,请先阅读目录
文章目录
前言
单个窗口
package com.gui;
import javax.swing.*;
import java.awt.*;
public class App {
public static void main(String[] args) {
// 实例化frame
Frame frame = new Frame("Smobee Tools");
// 设置可见性
frame.setVisible(true);
// 设置窗口大小
frame.setSize(1000, 500);
// 设置窗口背景颜色
frame.setBackground(Color.pink);
// 自定义颜色
//frame.setBackground(new Color(255, 255, 255));
// 设置窗口位置
frame.setLocation(frame.getWidth()/2, frame.getHeight()/2);
}
}
多个窗口
package com.gui;
import java.awt.*;
public class Frame1 {
public static void main(String[] args) {
NewFrame newFrame1 = new NewFrame(100, 200, 100, 200, Color.BLUE);
NewFrame newFrame2 = new NewFrame(100, 200, 300, 200, Color.pink);
NewFrame newFrame3 = new NewFrame(100, 200, 100, 400, Color.GREEN);
NewFrame newFrame4 = new NewFrame(100, 200, 300, 400, Color.ORANGE);
}
}
class NewFrame extends Frame {
public int num = 0;
public NewFrame(int w, int h, int x, int y, Color color) {
setVisible(true);
setSize(w, h);
setLocation(x, y);
setBackground(color);
}
}
Panel 面板
package com.gui;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Frame2 {
public static void main(String[] args) {
Frame frame = new Frame("Smobee");
frame.setSize(500, 500);
frame.setLocation(100, 200);
frame.setBackground(Color.white);
frame.setVisible(true);
frame.setLayout(null);
Panel panel = new Panel();
panel.setBounds(100, 100, 200, 100);
panel.setBackground(Color.pink);
frame.add(panel);
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
FlowLayout 流布局
package com.demo;
import java.awt.*;
public class button1 {
public static void main(String[] args) {
Frame frame = new Frame();
frame.setVisible(true);
frame.setSize(500, 500);
frame.setLocation(100, 100);
//frame.setLayout(new FlowLayout());
//frame.setLayout(new FlowLayout(FlowLayout.LEFT));
frame.setLayout(new FlowLayout(FlowLayout.RIGHT));
Button button1 = new Button("button1");
Button button2 = new Button("button2");
Button button3 = new Button("button3");
frame.add(button1);
frame.add(button2);
frame.add(button3);
}
}
BorderLayout 固定布局
package com.demo;
import java.awt.*;
public class button2 {
public static void main(String[] args) {
Frame frame = new Frame();
frame.setVisible(true);
frame.setSize(500, 500);
frame.setLocation(100, 100);
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");
frame.add(button1, BorderLayout.WEST);
frame.add(button2, BorderLayout.SOUTH);
frame.add(button3, BorderLayout.NORTH);
frame.add(button4, BorderLayout.EAST);
frame.add(button5, BorderLayout.CENTER);
}
}
GridLayout 表格布局
package com.demo;
import java.awt.*;
public class button3 {
public static void main(String[] args) {
Frame frame = new Frame();
frame.setVisible(true);
frame.setSize(500, 500);
frame.setLocation(100, 100);
frame.setLayout(new GridLayout(2,3));
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");
frame.add(button1);
frame.add(button2);
frame.add(button3);
frame.add(button4);
frame.add(button5);
}
}
实现多重布局的复杂页面
package com.demo;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class button4 {
public static void main(String[] args) {
// 初始化窗口
Frame frame = new Frame("Smobee Button");
new button4().windowClose(frame);
frame.setVisible(true);
frame.setSize(800, 600);
frame.setLocation(frame.getWidth()/2, frame.getHeight()/2);
frame.setLayout(new GridLayout(2, 1));
frame.setBackground(Color.white);
// 创建面板
Panel p1 = new Panel(new BorderLayout());
Panel p2 = new Panel(new BorderLayout());
Panel p3 = new Panel(new GridLayout(2, 1));
Panel p4 = new Panel(new GridLayout(2, 2));
// 创建按钮
Button b1 = new Button("a1");
Button b2 = new Button("a2");
Button b3 = new Button("a3");
Button b4 = new Button("a4");
// 按钮添加到面板
p1.add(b1, BorderLayout.EAST);
p1.add(b4, BorderLayout.WEST);
p1.add(p3, BorderLayout.CENTER);
p3.add(b2);
p3.add(b3);
// 再把面板加入窗口
frame.add(p1);
// 创建按钮
Button c1 = new Button("c1");
Button c2 = new Button("c2");
Button c3 = new Button("c3");
Button c4 = new Button("c4");
Button c5 = new Button("c5");
Button c6 = new Button("c6");
// 按钮添加到面板
p2.add(c1, BorderLayout.EAST);
p2.add(c2, BorderLayout.WEST);
p2.add(p4, BorderLayout.CENTER);
p4.add(c3);
p4.add(c4);
p4.add(c5);
p4.add(c6);
// 把面板加入窗口
frame.add(p2);
}
/**
* 关闭窗口
*/
public void windowClose(Frame frame) {
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
按钮监听事件
package com.demo;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class button5 {
public static void main(String[] args) {
Frame frame = new Frame();
frame.setVisible(true);
frame.setSize(800, 500);
frame.setLocation(250, 300);
Button button1 = new Button("b1");
Panel p1 = new Panel(new GridLayout(2, 1));
p1.add(button1);
frame.add(p1);
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("你点击了我");
}
});
}
}
多个按钮使用同个监听事件
package com.demo;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class button6 {
public static void main(String[] args) {
Frame frame = new Frame();
frame.setVisible(true);
frame.setSize(800, 500);
frame.setLocation(250, 300);
Button button1 = new Button("b1");
Button button2 = new Button("b2");
Button button3 = new Button("b3");
Panel p1 = new Panel(new GridLayout(3, 1));
p1.add(button1);
p1.add(button2);
p1.add(button3);
frame.add(p1);
// 按钮3,设置特殊内容
button3.setActionCommand("我是特殊的内容");
// 加入监听事件
MyAction myAction = new MyAction();
button1.addActionListener(myAction);
button2.addActionListener(myAction);
button3.addActionListener(myAction);
}
}
class MyAction implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("当前按钮:" + e.getActionCommand());
if (e.getActionCommand().equals("我是特殊的内容")) {
System.out.println("捕获到,你是特殊的内容");
}
}
}
输入框
package com.demo;
import java.awt.*;
import java.awt.event.*;
public class textfield {
public static void main(String[] args) {
MyFrame myFrame = new MyFrame();
new WindowClose(myFrame);
}
}
class MyFrame extends Frame {
MyFrame () {
setSize(500, 500);
setVisible(true);
setLocation(200, 300);
TextField text1 = new TextField();
add(text1);
MyTextAction myTextAction = new MyTextAction();
// 设置密码样式,遮罩符号
text1.setEchoChar('*');
text1.addActionListener(myTextAction);
}
}
class MyTextAction implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
TextField text = (TextField) e.getSource();
System.out.println("当前输入框的内容:" + text.getText());
System.out.println("自动清空内容");
text.setText("");
}
}
class WindowClose {
WindowClose(Frame frame) {
frame.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
}
}
按下回车
画笔paint
package com.tools.paintDemo;
import java.awt.*;
public class demo01 {
public static void main(String[] args) {
new myFrame();
}
}
class myFrame extends Frame {
myFrame() {
setSize(300, 300);
setVisible(true);
}
@Override
public void paint(Graphics g) {
g.setColor(Color.red);
g.drawOval(40,40,50,50);
g.setColor(Color.pink);
g.fillOval(80,80,60,60);
g.fillRect(120,120,50,50);
g.fill3DRect(150,100,20,30,false);
}
}
鼠标监听,画笔,点
package com.tools.paintDemo;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Iterator;
public class demo02 {
public static void main(String[] args) {
new myFrame2("Paint");
}
}
class myFrame2 extends Frame {
ArrayList points;
myFrame2(String title) {
super(title);
setSize(600, 600);
setLocationRelativeTo(null);
// 存储鼠标点击的点
points = new ArrayList<>();
this.addMouseListener(new MyMouseListener());
setVisible(true);
}
@Override
public void paint(Graphics g) {
Iterator iterator = points.iterator();
while (iterator.hasNext()) {
Point point = (Point) iterator.next();
g.setColor(Color.pink);
g.fillOval(point.x,point.y,10,10);
}
}
public void addPaint(Point point) {
points.add(point);
}
private class MyMouseListener extends MouseAdapter {
@Override
public void mousePressed(MouseEvent e) {
myFrame2 myFrame2 = (myFrame2) e.getSource();
myFrame2.addPaint(new Point(e.getX(), e.getY()));
myFrame2.repaint();
}
}
}
更新日志
提示:将会持续优化更新