一、Swing

1.概述
与AWT类似,Swing也是GUI的一部分,并且Swing是在AWT组件基础上构建的,它所提供的功能要比AWT提供的更为广泛
既然Swing是在AWT基础上构建的,那么Swing中就包含AWT中的各种组件,只是形式略有区别,用法相同
我们在使用Swing开发时,只需要很少的代码就可以利用其丰富、灵活的功能和模块化组件来创建更优雅的用户界面

2.顶层组件
使用Swing时,图形界面至少要有一个顶级Swing组件
顶级Swing组件为其它Swing组件在屏幕上的绘制和处理事件提供支持

3.常用的顶层组件
JFrame(窗口):表示主程序窗口
JDialog(对话框):每个JDialog对象表示一个对话框,对话框属于二级窗口
JApplet(小程序):与AWT类似,如JButton

4.AWT与Swing的异同
相同点:组件不会直接放到窗口上,而是放在个面板上,这些面板放到窗口上,才能显示图形界面

相异点:AWT在使用时,不需要获取容器,可以直接用具体的对象来添加;而Swing则是用顶层组件对象的getContentPane()方法获取到一个容器,在向顶曾组件中添加其他组件的时候,必须使用容器的add()方法来添加组件

二、代码

1.窗口、面板

public class suiyi {
    //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("哈哈大笑一个吧");

        jf.add(label);

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

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

java下面是一个二元一次方程组 java一元二次方程swing界面_ide


3.2弹窗

弹窗不用监听事件,点击右上角的关闭按钮就能关闭

public class suiyi extends JFrame {
    public suiyi(){
        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,50);

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

        container.add(button);
    }

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

//弹窗的窗口
class MyDialogDemo extends JDialog{
    public MyDialogDemo() {
        JDialog jDialog = new JDialog();
        jDialog.setVisible(true);
        jDialog.setBounds(100,100,500,500);


        Container container = jDialog.getContentPane();
        container.setLayout(new FlowLayout(FlowLayout.CENTER));

        container.add(new JLabel("一起学Java"));

    }
}

java下面是一个二元一次方程组 java一元二次方程swing界面_ico_02


3.3标签

public class IconDemo extends JFrame implements Icon {

    private int width;
    private int height;

    public IconDemo() {
    } //无参构造

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


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

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

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


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

    @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;
    }
}

java下面是一个二元一次方程组 java一元二次方程swing界面_ico_03


3.4面板

public class suiyi extends JFrame {
    public suiyi() {
        Container container = this.getContentPane();
        container.setLayout(new GridLayout(2,1,10,10)); //后面的参数的意思,间距

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

        panel1.add(new JButton("1"));
        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"));
        panel4.add(new JButton("4"));
        panel4.add(new JButton("4"));
        panel4.add(new JButton("4"));
        panel4.add(new JButton("4"));

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

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

    }

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

java下面是一个二元一次方程组 java一元二次方程swing界面_java下面是一个二元一次方程组_04


3.5按钮

注意:目录中必须有tx.jpg这个文件

public class suiyi extends JFrame {

    public suiyi() {
        Container container = this.getContentPane();
        //将一个图片变为图标
        URL resource = suiyi.class.getResource("tx.jpg");
        Icon icon = new ImageIcon(resource);

        //把这个图标放在按钮上
        JButton button = new JButton();
        button.setIcon(icon);
        button.setToolTipText("图片按钮");

        //add
        container.add(button);

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

    }

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

图片是一个大按钮

java下面是一个二元一次方程组 java一元二次方程swing界面_ide_05


3.6下拉框

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

        JComboBox status = new JComboBox();

        status.addItem(null);
        status.addItem("正在热映");
        status.addItem("已下架");
        status.addItem("即将上映");

        container.add(status);

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

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

java下面是一个二元一次方程组 java一元二次方程swing界面_Swing_06


3.7文本框

public class suiyi extends JFrame {
    public suiyi() {

        Container container = this.getContentPane();

        JTextField textField = new JTextField("hello");
        JTextField textField2 = new JTextField("world", 20);

        container.add(textField, BorderLayout.NORTH);
        container.add(textField2, BorderLayout.SOUTH);

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

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

java下面是一个二元一次方程组 java一元二次方程swing界面_ico_07