[关闭]
@XQF 2016-08-11T21:34:36.000000Z 字数 2743 阅读 1153

Swing入门

J2SE核心开发-----实验楼

先聊聊GUI和MVC

图形用户界面(Graphical User Interface,简称GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面

Swing便是Java中的一个GUI,是基于模型-视图-控制器设计模式来进行设计的,通过事件对用户的输入进行反应。即使是最简单的一个按钮,也是包含了他的外观(什么颜色,多大),内容(按钮上显示什么文字等)以及行为(对于用户按下时的反应)这三个要素。
此处输入图片的描述

初识Swing

Swing是在抽象窗口工具箱(AWT)的架构上发展而来的一个用户界面库,整个可视组件库的基础构造块是JCompontent,它是所有组件的父类,为所有组件提供了绘制的基础架构。换言之,所有Swing组件都是由它派生而来。
基于Swing制作的Java程序就是由一个一个的组件构成的,开发的过程有点像组装积木。

盛放控件的盘子-------JFrame

JFrame类就是一个容器,允许把其他组件添加到它里面,把他们组织起来,并呈现给用户。JFrame在大多数的操作系统中是以窗口的形式注册的。这意味着可以对其进行最小化和最大化,甚至移动这个窗口
JFrame包含的一些方法:

代码演示:

  1. public class MySwingWindow extends JFrame {
  2. public MySwingWindow() {
  3. // TODO Auto-generated constructor stub
  4. // 在窗体的构造方法中设置窗体的各项属性
  5. super();
  6. // 使用super()来引用父类的成分,用this来引用当前对象
  7. this.setSize(1000, 1000);//设置窗体大小
  8. this.getContentPane().setLayout(null);//设置布局
  9. this.setTitle("My first Swing Window");//设置窗体标题
  10. }
  11. public static void main(String[] args) {
  12. // TODO Auto-generated method stub
  13. // 声明一个窗体对象
  14. MySwingWindow mySwingWindow = new MySwingWindow();
  15. mySwingWindow.setVisible(true);//设置对象可见
  16. }
  17. }

个性化Swing应用程序

有了容器,我们就可以在上面添加各种各样的控件。Swing的控件数量是巨大的,但是他们的使用方法是相通的。
首先添加最基础的组件——————标签JLabel.JLabel可以用作文本描述和图片描述,常用的方法如下:

实例代码

  1. public class MySwingWindow extends JFrame {
  2. private JLabel myLabel;
  3. private JTextField myTextField;
  4. private JButton myButton;
  5. public MySwingWindow() {
  6. // TODO Auto-generated constructor stub
  7. // 在窗体的构造方法中设置窗体的各项属性
  8. super();
  9. // 使用super()来引用父类的成分,用this来引用当前对象
  10. this.setSize(400, 300);// 设置窗体大小
  11. this.getContentPane().setLayout(null);// 设置布局
  12. this.setTitle("My first Swing Window");// 设置窗体标题
  13. this.add(getJButton(), null);
  14. this.add(getJLabel(), null);
  15. this.add(getJTextField(), null);
  16. // this.add(myButton, null);
  17. // this.add(myLabel, null);
  18. // this.add(myTextField, null);
  19. // 这种写法很直接为什么错了,因为我们添加进去的控件居然是null,没有进行任何的实例化,不带任何属性,系统应该是无法处理的
  20. }
  21. private JLabel getJLabel() {
  22. if (myLabel == null) {
  23. myLabel = new JLabel();
  24. myLabel.setBounds(5, 10, 250, 30);
  25. myLabel.setText("Hello !Welcome to my home");
  26. }
  27. return myLabel;
  28. }
  29. private JTextField getJTextField() {
  30. if (myTextField == null) {
  31. myTextField = new JTextField();
  32. myTextField.setBounds(5, 45, 200, 30);
  33. myTextField.setText("XQF");
  34. }
  35. return myTextField;
  36. }
  37. private JButton getJButton() {
  38. if (myButton == null) {
  39. myButton = new JButton();
  40. myButton.setBounds(5, 80, 100, 40);
  41. myButton.setText("Click me!");
  42. //设置监听事件,好玩,要是学安卓之前学过这个的话,应该是很快就上手吧
  43. myButton.addActionListener(new ActionListener() {
  44. @Override
  45. public void actionPerformed(ActionEvent e) {
  46. // TODO Auto-generated method stub
  47. myLabel.setForeground(Color.RED);
  48. myTextField.setBackground(Color.BLUE);
  49. }
  50. });
  51. }
  52. return myButton;
  53. }
  54. public static void main(String[] args) {
  55. // TODO Auto-generated method stub
  56. // 声明一个窗体对象
  57. MySwingWindow mySwingWindow = new MySwingWindow();
  58. mySwingWindow.setVisible(true);// 设置对象可见
  59. }
  60. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注