Java的Swing基本控件

一、JLabel

案例运行结果

 

 

 

 

 MyFrame.java

package swingkongjian;

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

public class MyFrame extends JFrame {

    public MyFrame(String title){
        super(title);
        //内容面板
        Container contentPane=getContentPane();
        contentPane.setLayout(new FlowLayout());

        //向内容面板添加控件
        JLabel label= new JLabel();
        contentPane.add(label);

        label.setText("百度官网");
        label.setFont(new Font("微软雅黑",0,14));
        label.setForeground(Color.BLUE);
        label.setToolTipText("https://www.baidu.com");
    }

}

SwingDemo.java

package swingkongjian;

import javax.swing.*;

public class SwingDemo {
    private static void createGUI(){

        //JFrame指一个窗口,构造方法的参数为窗口标题
        MyFrame frame=new MyFrame("swing demo");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //设置窗口的其它参数,如窗口大小
        frame.setSize(400,300);

        //显示窗口
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                createGUI();
            }
        });
    }
}

二、JButton与点击事件的实现

案例运行结果

 

 MyFrame2.java

package swingkongjian;

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

public class MyFrame2 extends JFrame {
    JLabel label= new JLabel("姓名");
    //16表示16列,计算宽度显示,而不是输入字符的个数限制
    JTextField jTextField=new JTextField(16);
    JButton button=new JButton("确定");
    public MyFrame2(String title){
        super(title);
        //内容面板
        Container contentPane=getContentPane();
        contentPane.setLayout(new FlowLayout());

        //向内容面板添加控件
        contentPane.add(label);
        contentPane.add(jTextField);
        contentPane.add(button);

        //添加点击事件
        button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                onButtonOK();
            }
        });
    }

    //事件处理
    private void onButtonOK() {
        String str=jTextField.getText();
        JOptionPane.showMessageDialog(this,"输入了"+str);
    }
}

SwingDemo02.java

package swingkongjian;

import javax.swing.*;

public class SwingDemo02 {
    private static void createGUI(){

        //JFrame指一个窗口,构造方法的参数为窗口标题
        MyFrame2 frame=new MyFrame2("swing demo02");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        //设置窗口的其它参数,如窗口大小
        frame.setSize(600,400);

        //显示窗口
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                createGUI();
            }
        });
    }
}

三、JCheckBox

案例运行结果

 

 

 

 MyFrame3.java

package swingkongjian;

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

public class MyFrame3 extends JFrame {
    JCheckBox cbx=new JCheckBox("我想订阅邮件通知");
    JTextField email=new JTextField(16);
    public MyFrame3(String title){
        super(title);
        //内容面板
        Container contentPane =getContentPane();
        contentPane.setLayout(new FlowLayout());
        //添加控件
        contentPane.add(cbx);
        contentPane.add(email);
        //默认选中
        cbx.setSelected(true);
        email.setToolTipText("请输入邮箱地址");

        cbx.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                //如果未选中,则禁用文本框
                if (cbx.isSelected()){
                    email.setEnabled(true);
                }else {
                    email.setEnabled(false);
                }
            }
        });
    }
}

SwingDemo03.java

package swingkongjian;

import javax.swing.*;

public class SwingDemo03 {
    private static void createGUI(){
        MyFrame3 frame=new MyFrame3("swing demo03");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setSize(600,400);

        frame.setVisible(true);
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                createGUI();
            }
        });
    }
}

四、JComboBox

案例运行结果

 

 

 

 

 

 MyFrame4.java

package swingkongjian;

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

public class MyFrame4 extends JFrame {
    //JComboBox是一个泛型,参数类型是数据项的类型
    JComboBox<String> colorList =new JComboBox<>();
    JLabel sampleText=new JLabel("文本样式,this is a simple");
    public MyFrame4(String title){
        super(title);
        //内容面板
        Container contentPane=getContentPane();
        contentPane.setLayout(new FlowLayout());
        //添加控件
        contentPane.add(colorList);
        contentPane.add(sampleText);

        //向JComboBox中添加数据
        colorList.addItem("红色");
        colorList.addItem("蓝色");
        colorList.addItem("绿色");
        
        UpdateTextColor();

        //下拉列表的事件处理
        colorList.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                UpdateTextColor();
            }
        });
    }

    private void UpdateTextColor() {
        //更新JLabel的颜色显示

        //获取选中的颜色
        String item=(String) colorList.getSelectedItem();
        //根据选中的颜色,设置JLabel的文字颜色
        Color color=null;
        if (item.equals("红色")){
            color=Color.RED;
        }else if (item.equals("蓝色")){
            color=Color.BLUE;
        }else if (item.equals("绿色")){
            color=Color.GREEN;
        }
        sampleText.setForeground(color);
    }
}

对其进行优化

MyFrame5.java

package swingkongjian;

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

public class MyFrame5  extends JFrame {
    JComboBox<ListOption> colorList=new JComboBox<>();

    JLabel sampleText=new JLabel("文本样式,this is a simple");
    public MyFrame5(String title){
        super(title);
        //内容面板
        Container contentPane=getContentPane();
        contentPane.setLayout(new FlowLayout());
        //添加控件
        contentPane.add(colorList);
        contentPane.add(sampleText);

        //向JComboBox中添加数据
        colorList.addItem(new ListOption("红色",Color.RED));
        colorList.addItem(new ListOption("蓝色",Color.BLUE));
        colorList.addItem(new ListOption("绿色",Color.GREEN));

        UpdateTextColor();

        //下拉列表的事件处理
        colorList.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                UpdateTextColor();
            }
        });
    }

    private void UpdateTextColor() {
        //更新JLabel的颜色显示

        //获取选中的颜色
        ListOption item=(ListOption) colorList.getSelectedItem();
        //根据选中的颜色,设置JLabel的文字颜色
        sampleText.setForeground(item.color);
    }
    private static class ListOption{
        /**
         * 这个类是用来表示列表项
         */
        public String text;
        public Color color;
        public ListOption(String text,Color color){
            this.text=text;
            this.color=color;
        }

        @Override
        public String toString() {
            return this.text;
        }
    }
}

SwingDemo04.java

package swingkongjian;

import javax.swing.*;

public class SwingDemo04 {
    private static void CreateGUI(){
        MyFrame4 frame=new MyFrame4("SwingDemo04");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setSize(600,400);

        frame.setVisible(true);

    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                CreateGUI();
            }
        });
    }
}
View Code

SwingDemo05.java

package swingkongjian;

import javax.swing.*;

public class SwingDemo05 {
    private static void CreateGUI(){
        MyFrame5 frame=new MyFrame5("SwingDemo05");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setSize(600,400);

        frame.setVisible(true);

    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                CreateGUI();
            }
        });
    }
}
SwingDemo05.java

五、彩色标签(案例)

运行结果

 

 MyFrame6.java

package swingkongjian;

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

public class MyFrame6 extends JFrame {

    public MyFrame6(String title){
        super(title);
        Container contentPane=getContentPane();
        contentPane.setLayout(new FlowLayout());

        JLabel a1=new JLabel("1");
        //设置背景为不透明(默认透明)
        a1.setOpaque(true);
        //设置背景色
        a1.setBackground(Color.YELLOW);
        //设置最佳尺寸
        a1.setPreferredSize(new Dimension(60,30));
        //设置水平对齐
        a1.setHorizontalAlignment(SwingConstants.CENTER);

        JLabel a2=new JLabel("2");
        a2.setOpaque(true);
        a2.setBackground(Color.GREEN);
        a2.setPreferredSize(new Dimension(60,30));
        a2.setHorizontalAlignment(SwingConstants.CENTER);

        JLabel a3=new JLabel("3");
        a3.setOpaque(true);
        a3.setBackground(Color.LIGHT_GRAY);
        a3.setPreferredSize(new Dimension(60,30));
        a3.setHorizontalAlignment(SwingConstants.CENTER);

        JLabel a4=new JLabel("4");
        a4.setOpaque(true);
        a4.setBackground(Color.CYAN);
        a4.setPreferredSize(new Dimension(60,30));
        a4.setHorizontalAlignment(SwingConstants.CENTER);

        contentPane.add(a1);
        contentPane.add(a2);
        contentPane.add(a3);
        contentPane.add(a4);
    }
}

优化

MyFrame7.java

package swingkongjian;

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

public class MyFrame7 extends JFrame {
    public MyFrame7(String title){
        super(title);
        Container contentPane=getContentPane();
        contentPane.setLayout(new FlowLayout());

        JLabel a1=new ColorfulLabel("1",Color.YELLOW);

        JLabel a2=new ColorfulLabel("2",Color.GREEN);

        JLabel a3=new ColorfulLabel("3",Color.LIGHT_GRAY);

        JLabel a4=new ColorfulLabel("4",Color.CYAN);

        contentPane.add(a1);
        contentPane.add(a2);
        contentPane.add(a3);
        contentPane.add(a4);
    }

    private static class ColorfulLabel extends JLabel{
        public ColorfulLabel(String text,Color bgColor){
            super(text);
            setOpaque(true);
            setBackground(bgColor);
            setPreferredSize(new Dimension(60,30));
            setHorizontalAlignment(SwingConstants.CENTER);
        }
    }
}

SwingDemo06.java

package swingkongjian;

import javax.swing.*;

public class SwingDemo06 {
    private static void CreateGUI(){
        MyFrame6 frame=new MyFrame6("SwingDemo06");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setSize(600,400);

        frame.setVisible(true);

    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                CreateGUI();
            }
        });
    }
}
SwingDemo06.java

SwingDemo07.java

package swingkongjian;

import javax.swing.*;

public class SwingDemo07 {
    private static void CreateGUI(){
        MyFrame7 frame=new MyFrame7("SwingDemo07");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setSize(600,400);

        frame.setVisible(true);

    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                CreateGUI();
            }
        });
    }
}
SwingDemo07.java

 

posted @ 2020-09-10 19:32  夜月薇凉映银弩  阅读(939)  评论(0编辑  收藏  举报