概述

本文对java自带的javax.swing.*包下有图形开发组件,今天就对基本控件做些基本介绍,

基本控件

  • JFrame(主窗口)
    这个控件为一个基本窗口控件,里面可以装除JFrame外的其他控件比如JPanel,JButton等,看个基本效果
public class MainFrame extends JFrame {
    public MainFrame() {
        setSize(500, 450);//设置窗口大小
        setTitle("我是窗口");//设置标题
        ImageIcon imageIcon = new ImageIcon("image/icon.png");
        setIconImage(imageIcon.getImage());//设置图片
        this.setLayout(null);//设置里面控件的布局方式
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置点击关闭对出程序
    }

    public static void main(String[] args) {
        MainFrame mainFrame = new MainFrame();
        mainFrame.setVisible(true);//显示窗口
    }
}

效果如下

Java怎么在电脑桌面做个时间 java怎么写桌面程序_swing


这样就显示了一个窗口,用add方法可以添加控件,这里setLayout有很多种比较常见的有BorderLayout,GridLayout,FlowLayout,CardLayout等,后面单独讲吧,比较多.这里设置为null表示使用绝对坐标,要不然控件都为全屏模式

注意:setVisible()方法应该在所有控件设置上去后调用,否者控件不会显示.

  • JDialog(弹窗)
public static void main(String[] args) {
        MainFrame mainFrame = new MainFrame();
        JDialog dialog = new JDialog(mainFrame);
        dialog.setTitle("对话框");
        dialog.setSize(300,200);
        dialog.setModal(true);
        mainFrame.setVisible(true);
        dialog.setVisible(true);
    }

Java怎么在电脑桌面做个时间 java怎么写桌面程序_gui_02


也可以使用JOptionPane显示各种不同的Dialog,方便使用

  • JPanel(分窗口)
    该控件也是一个装控件的容器,在主窗口里面,将窗口分为不同的功能块,里面可以装Jpanel和各种控件,当然也有也有很多种
public class HomePanel extends JPanel {
    public HomePanel() {
        setBounds(60,80,400,300);//设置位置和大小
        setLayout(null);
        setBackground(Color.BLACK);
        JButton b = new JButton("按钮");
        b.setBounds(50,90,80,60);//设置位置和大小
        add(b);
    }
}

将该窗口显示在上面的窗口效果如下

Java怎么在电脑桌面做个时间 java怎么写桌面程序_Java怎么在电脑桌面做个时间_03


panel有很多种:ContentPane、SplitPanel、JScrollPanel、TabbedPanel自己可以试试

  • JButton(按钮)
    使用比较普遍
public class HomePanel extends BasePanel {
    public HomePanel() {
        setBounds(60, 80, 400, 300);
        setLayout(null);
        setBackground(Color.BLACK);
        JButton b = new JButton("按钮");
        b.setForeground(new Color(0xFFFFFF));//文字颜色
        b.setPreferredSize(new Dimension(60, 80));//优先的大小
        b.setFont(new Font("宋体", Font.PLAIN, 20));//文字字体
        b.setBounds(50, 90, 100, 60);//位置和大小
        b.setBackground(new Color(0x3A92FF));//背景
        b.setIcon(new SortArrowIcon(true, Color.RED));//设置图标
        b.setRolloverIcon(new MetalComboBoxIcon());//设置鼠标停留图标(要先setIcon)
        b.setPressedIcon(new SortArrowIcon(false, Color.GREEN));//点击时的图标(要先setIcon)
        b.setToolTipText("这是个按钮");//鼠标停留显示的文字
        b.setHorizontalTextPosition(SwingConstants.CENTER);//文字水平方向位置
        b.setVerticalTextPosition(SwingConstants.TOP);//文字垂直方向位置
        b.setBorder(new BevelBorder(BevelBorder.LOWERED, new Color(0x83D944), new Color(0xFD315D)));//边框
        b.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                if (e.getSource() == b) {
                    // TODO: 2018/12/14 点击监听 
                }
            }
        });
        add(b);
    }
}
  • JLable(文字,图片)
    该控件用于显示图片或文字
public class HomePanel extends BasePanel {
    public HomePanel() {
        setBounds(60, 80, 400, 300);
        setLayout(null);
        setBackground(Color.BLACK);
        JLabel label = new JLabel();
        label.setLayout(null);
        label.setBackground(Color.GREEN);
        label.setSize(200,30);
        label.setText("这是文字");
        label.setForeground(new Color(0x3A92FF));
        label.setFont(new Font("仿宋",Font.ITALIC,30));
        JLabel lImg = new JLabel();
        lImg.setLocation(0,100);
        lImg.setSize(200,100);
        lImg.setIcon(new ImageIcon(ImageManage.getImage("add.png")));
        add(label);
        add(lImg);
    }
}

Java怎么在电脑桌面做个时间 java怎么写桌面程序_exe_04


此外还有很多种控件,下面列举了常用的部分控件

  • JCheckBox 复选框
  • JRadioButton 单选框
  • ButtonGroup 按钮组
  • JComboBox 下拉框
  • JOptionPane 对话框
  • JTextField 文本框
  • JPasswordField 密码框
  • JTextArea 文本域
  • JProgressBar 进度条
  • JFileChooser 文件选择器
  • JMenuBar 菜单栏
  • JToolBar 工具栏
  • JTable 表格