Swing

一、窗口、面板

package com.massimo.jframe;

import javax.swing.*;
import java.awt.*;

public class JFrameTest {
    //init();初始化
    public void init(){
        //顶级窗口
        JFrame jf = new JFrame("这是一个JFrame窗口");
        jf.setVisible(true);
        jf.setBounds(100 , 100 , 200 , 200);
        jf.setBackground(Color.cyan);
        //设置文字JLabel
        JLabel label = new JLabel("Hello Massimo!");
        //设置文字居中
        label.setHorizontalAlignment(SwingConstants.CENTER);

        //获得一个容器
        Container container = jf.getContentPane();
        container.setBackground(Color.cyan);

        jf.add(label);

        //关闭事件
        jf.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        //建立一个窗口
        new JFrameTest().init();
    }
}

效果:
在这里插入图片描述

二、弹窗

package com.massimo.dialog;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

//主窗口
public class DialogTest extends JFrame {
    public DialogTest(){
        this.setVisible(true);
        this.setSize(700 , 500);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

        //JFrame 放东西,容器
        Container container = this.getContentPane();
        //绝对布局
        container.setLayout(null);

        //按钮
        JButton button = new JButton("点击弹出一个对话框");
        button.setBounds(30 , 30 , 200 , 500);

        //点击这个按钮的时候,弹出一个弹窗
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                new MyDialog();
            }
        });


        container.add(button);
    }

    public static void main(String[] args) {
        new DialogTest();
    }
}

//弹窗的窗口
class MyDialog extends JDialog{
    public MyDialog(){
        this.setVisible(true);
        this.setBounds(100 , 100 , 500 , 500);
        //弹窗是可以被关掉的,所以不用显示设置

        Container container = this.getContentPane();
        container.setLayout(null);

        container.add(new Label("欢迎你,马西莫!"));
    }
}

效果:
在这里插入图片描述

三、标签扩展

1、Icon标签

package com.massimo.icon;

import javax.swing.*;
import java.awt.*;

//图标,需要实现类,Frame继承
public class IconTest extends JFrame implements Icon {
    private int width;
    private int height;

    public IconTest(){

    }

    public IconTest(int width , int height){
        this.width = width;
        this.height = height;
    }

    public void init(){
        IconTest iconTest = new IconTest(15, 15);
        //图标放在标签上,也可以放在按钮上
        JLabel label = new JLabel("icontest", iconTest, SwingConstants.CENTER);

        Container container = getContentPane();
        container.add(label);

        this.setVisible(true);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    @Override
    public void paintIcon(Component c, Graphics g, int x, int y) {
        g.fillOval(x , y , width , height);
    }

    @Override
    public int getIconWidth() {
        return this.width;
    }

    @Override
    public int getIconHeight() {
        return this.height;
    }

    public static void main(String[] args) {
        new IconTest().init();
    }
}

效果:
在这里插入图片描述

2、ImageIcon

package com.massimo.icon;

import javax.swing.*;
import java.awt.*;
import java.net.URL;

public class ImageIconTest extends JFrame {

    public ImageIconTest(){
        //获取图片的地址
        JLabel label = new JLabel("ImageIcon");
        URL url = ImageIconTest.class.getResource("qq.png");

        ImageIcon imageIcon = new ImageIcon(url);
        label.setIcon(imageIcon);
        label.setHorizontalAlignment(SwingConstants.CENTER);

        Container container = getContentPane();
        container.add(label);

        setVisible(true);
        setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        setBounds(100 , 100 , 200 , 200);
    }

    public static void main(String[] args) {
        new ImageIconTest();
    }
}

项目结构:
在这里插入图片描述
效果:
在这里插入图片描述

四、面板扩展

1、JPanel面板

package com.massimo.jpanel;

import com.massimo.jframe.JFrameTest;

import javax.swing.*;
import java.awt.*;

public class JPanelTest extends JFrame {
    public JPanelTest(){
        Container container = this.getContentPane();

        container.setLayout(new GridLayout(2 , 1 , 10 , 10));//最后的两个参数表示间距

        JPanel panel = new JPanel(new GridLayout(1, 3));
        JPanel panel1 = new JPanel(new GridLayout(1, 2));
        JPanel panel2 = new JPanel(new GridLayout(2, 1));
        JPanel panel3 = new JPanel(new GridLayout(3, 2));

        panel.add(new Button("1"));
        panel.add(new Button("1"));
        panel1.add(new Button("2"));
        panel1.add(new Button("2"));
        panel2.add(new Button("3"));
        panel2.add(new Button("3"));
        panel3.add(new Button("4"));
        panel3.add(new Button("4"));
        panel3.add(new Button("4"));
        panel3.add(new Button("4"));
        panel3.add(new Button("4"));
        panel3.add(new Button("4"));

        container.add(panel);
        container.add(panel1);
        container.add(panel2);
        container.add(panel3);

        this.setVisible(true);
        this.setSize(500 , 500);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new JPanelTest();
    }

}

效果:
在这里插入图片描述

2、JScroll面板

package com.massimo.jpanel;

import javax.swing.*;
import java.awt.*;

public class JScrolllTest extends JFrame {

    public JScrolllTest(){
        Container container = this.getContentPane();

        //文本域
        JTextArea textArea = new JTextArea(20, 50);
        textArea.setText("欢迎你,马西莫!");

        //Scroll面板
        JScrollPane scrollPane = new JScrollPane(textArea);
        container.add(scrollPane);
        
        this.setVisible(true);
        this.setBounds(100 , 100 , 300 , 350);
        this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    }

    public static void main(String[] args) {
        new JScrolllTest();
    }
}

效果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值