容器组件
Java的图形用户界面的基本组成部分是组件,组件是一个以图形化的方式显示在屏幕上并能与用户进行交互的对象; 组件不能独立地显示出来,必须将组件放在一定的容器(container)中才可以显示出来。 容器可以容纳多个组件,通过调用容器的add(Component comp)方法向容器中添加组件。 窗口(Frame)和面板(Panel)是最常用的两个容器。
常用容器
JFrame用于在Swing程序中创建窗体;
常用方法: void setBackground(Color bg)设置面板的背景色,由参数bg指定颜色 void setLayout(LayoutManager mgr)设置面板的布局,参数是布局管理器
JPanel提供面板,它是轻量级的容器; 面板中可以添加其它组件,也可以设置布局,我们一般使用面板来实现布局嵌套;
构造方法:
public class FrameDemo extends JFrame{ public FrameDemo(){ this.setSize(500, 500); //长,宽 this.setLocation(100,150);//设置坐标位置 this.setLocationRelativeTo(null);//窗口居中 this.setTitle("欢迎来到xxx中心");//设置标题 this.setIconImage(new ImageIcon("fly.png").getImage);//设置窗口图标 注:把图片复制到src中 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口选项 this.setResizable(false);//是否改变窗口大小 this.dispose() ;//释放窗口 /*在窗口中要用到面板*/ JPanel jp = new JPanel();//创建一个面板组件 默认是流式布局 JButton jb = new JButton("保存"); jp.add(jb);//把按钮添加到面板上 this.add(jp);//把面板添加到窗口上 this.setVisible(true);//显示窗口 true } public static void main(String[] args){ FrameDemo jframe = new FrameDemo();//窗帘窗口对象 } }
布局管理
JPanel jp = new JPanel();//创建一个面板组件 默认是流式布局
JPanel jp = new JPanel(new FlowLayout(FLowLayout.LEFT));//流式布局左对齐
JPanel jp = new JPanel();//创建一个面板组件 默认是流式布局
JPanel jp = new JPanel(new FlowLayout(FLowLayout.LEFT));//流式布局左对齐
JPanel jp = new JPanel(new BorderLayout);//边界布局
JButton jb1 = new JButton("按钮1");
JButton jb2 = new JButton("按钮2");
JButton jb3 = new JButton("按钮3");
JButton jb4 = new JButton("按钮4");
JButton jb5 = new JButton("按钮5");
jp.add(jb1,BorderLayout.NORTH);//添加组件时设置所在区域,中间区域不能缺少
jp.add(jb2,BorderLayout.SOUTH);
jp.add(jb3,BorderLayout.WEST);
jp.add(jb4,BorderLayout.EAST);
jp.add(jb5,BorderLayout.CENTER);
JPanel jp = new JPanel(new GridLayout);//网格布局
JPanel jp = new JPanel(new GridLayout(2,2));//两行两列
JButton jb1 = new JButton("按钮1");
JButton jb2 = new JButton("按钮2");
JButton jb3 = new JButton("按钮3");
JButton jb4 = new JButton("按钮4");
jp.add(jb1);
jp.add(jb2);
jp.add(jb3);
jp.add(jb4);
常用组件
标签(JLabel)
标签是容纳文本和图标的控件,通常用来在界面中标识别的控件。 构造函数: JLabel() 创建一个空的标签 setFont(new Font(“宋体”,Font.BOLD, 18)); 设置字体
单行文本(JTextField)
多行文本框(JTextArea)
密码框(JPasswordField)
按钮(JButton)
//标签组件,用来显示文字、图片
JLabel accountLabel = new JLabel(new ImageIcon("xxx.png"));
JLabel accountLabel = new JLabel("账号");
accountLabel.setFont(new Font("宋体",Font.BOLD,20));//设置标签字体
accountLabel.setForeground(Color.BLUE);//设置标签颜色
//文本框
//单行文本框
JTextField accountText = new JTextField(20);
//多行文本框
JTextArea jTextArea = new JTextArea(5,20);
//滚动条
JScrollPane jsp = new JScrollPane(jTextArea);
//密码框
JPasswordField passwordField = new JPasswordField(20);
jp.add(accountLabel);
jp.add(accountText);
jp.add(passwordField);
jp.add(jsp)
菜单栏组件: 构造方法:JMenuBar(); 方法:add(menu); 向菜单栏添加菜单
菜单组件: 构造方法:JMenu(“菜单名称"); 方法:add(menuItem); 向菜单添加菜单选项
菜单项组件: 构造方法:JMenuItem(“菜单项名称"); 将菜单栏添加到窗口 setJMenuBar(menuBar);
JMenuBar jMenuBar = new JMenuBar();//菜单栏
JMenu jMenu1 = new JMenu("文件");//菜单
JMenu jMenu2 = new JMenu("帮助");
JMenuItem ji1 = new JMenuItem("新建");//菜单项
JMenuItem ji2 = new JMenuItem("保存");
JMenuItem ji3 = new JMenuItem("关于我们");
jMenuBar.add(jMenu1);
jMenuBar.add(jMenu2);
jMenu1.add(ji1);
jMenu1.add(ji2);
jMenu2.add(ji3);
jp.add(jMenuBar);
事件处理
添加事件监听器(此处即为匿名类) 按钮对象.addActionListener(new ActionListener() { // 事件处理 @Override
public void actionPerformed(ActionEvent e) { 执行操作 } });
//为按钮添加事件监听 (简单通用的)
按钮.addActionListener(new ActionListener());
//鼠标事件
按钮.addMouseListener(new MouseListener());
//键盘事件
按钮.addKeyListener(new KeyListener());
对话框
JOptionPane对话框
showMessageDialog():消息对话框
主要有五种消息类型,类型不同,图标不同:
ERROR_MESSAGE 错误消息提示
INFORMATION_MESSAGE 信息提示
WARNING_MESSAGE 警告提示
QUESTION_MESSAGE 问题提示
PLAIN_MESSAGE 简洁提示
showConfirmDialog():确认对话框
主要有四种消息类型,类型不同,图标不同: DEFAULT_OPTION 默认选项
YES_NO_OPTION 是/否选项
YES_NO_CANCEL_OPTION 是/否/取消选项
OK_CANCEL_OPTION 确定/取消