zoukankan      html  css  js  c++  java
  • Java swing 学习总结

    一、常用布局

    • 边界布局(BorderLayout)
    • 网格布局(GridLayout)
    • 流式布局(FlowLayout)
    • 绝对布局(null)

      边界布局(BorderLayout)

      按方位分为 5 个区域(东、西、南、北、中),每个区域放置一个组件。

     JPanel panel = new JPanel(new BorderLayout());

      

      网格布局(GridLayout)

      它以矩形网格形式对容器的组件进行布置,把容器按行列分成大小相等的矩形网格,一个网格中放置一个组件,组件宽高自动撑满网格。

      GridLayout的常用构造方法

    • 默认构造, 每个组件占据一行一列
    JPanel panel = new JPanel(new GridLayout());
    • 指定 行数 和 列数 的网格布局
    JPanel panel = new JPanel(new GridLayout(int rows, int cols));
    • 指定行数和列数的网格布局, 并指定水平和竖直网格间隙
    JPanel panel = new JPanel(new GridLayout(int rows, int cols, int hgap, int vgap));

      流式布局(FlowLayout)

      流式布局管理器。按水平方向依次排列放置组件,排满一行,换下一行继续排列。

      同一行(水平方向)的组件的对齐方式由 FlowLayout 的align属性确定,它可能的值如下:

    • FlowLayout.LEFT : 左对齐
    • FlowLayout.CENTER : 居中对齐(默认)
    • FlowLayout.RIGHT : 右对齐
    • FlowLayout.LEADING : 与容器方向的开始边对齐,例如,对于从左到右的方向,则与左边对齐
    • FlowLayout.TRAILING : 与容器方向的结束边对齐,例如,对于从左到右的方向,则与右边对齐。

      FlowLayout的常用构造方法

    • 默认 居中对齐的,水平和垂直间隙是 5 个单位
    JPanel panel = new JPanel(new FlowLayout());
    • 指定对齐方式,默认的水平和垂直间隙是 5 个单位
    JPanel panel = new JPanel(new FlowLayout(int align));
    • 指定对齐方式,水平和竖直 间隙
    JPanel panel = new JPanel(new FlowLayout(int align, int hgap, int vgap));

      绝对布局(null)

      绝对布局没有特定一个布局管理器类来表示,给容器的布局管理器设置为 null,就表示使用绝对布局,即通过设置组件的坐标和宽高来布置组件。

      给组件设置坐标和宽高相的关方法,以Button为例

      

    JPanel panel = new JPanel(null);
    JButton  button= new JButton("Button");
    //设置按钮的坐标
    button.setLocation(int x, int y);
    //设置按钮的宽高
    button.setSize(int width, int height);
    //设置按钮的界限(一次性设置组件的 坐标 和 宽高)
    button.setBounds(int x, int y, int width, int height);

    二、Swing的常用组件

      组件的常用方法

    // 设置文本的字体类型、样式 和 大小
    void setFont(Font font)
    // 设置字体颜色
    void setForeground(Color fg)
    // 设置组件是否可见
    void setVisible(boolean visible)
    // 设置组件是否为 不透明,JLabel默认为透明,设置为不透明后才能显示背景
    void setOpaque(boolean isOpaque)
    // 设置组件的 首选 大小
    void setPreferredSize(Dimension preferredSize)
    // 设置组件的 最小 大小
    void setMinimumSize(Dimension minimumSize)
    // 设置组件的 最大 大小
    void setMaximumSize(Dimension maximumSize)
    • JLabel(标签)
    • JButton(按钮)
    • JTextField(文本框)
    • JPasswordField(密码框)
    • JTextArea(文本区域)
    • JComboBox(下拉列表框)
    • JList(列表框)

     2.1、JLabel(标签)

      标签主要用于展示 文本 或 图片,也可以 同时显示文本和图片。

      JLabel 的构造方法:

    /*
    text: 标签显示的 文本
    image: 标签显示的 图片
    horizontalAlignment: 标签内容(在标签内)的水平对其方式(竖直方向默认居中, 可通过方法设置)
    /*
    JLabel label = new JLabel(String text);
    JLabel label = new JLabel(String text, int horizontalAlignment);
    JLabel label = new JLabel(Icon image);
    JLabel label = new JLabel(Icon image, int horizontalAlignment);
    JLabel label = new JLabel(String text, Icon image, int horizontalAlignment);

      JLabel 的常用方法:

    // 设置 文本 和 图片
    void setText(String text)
    void setIcon(Icon icon)
    
    // 设置文本相对于图片的位置(文本默认在图片右边垂直居中)
    void setHorizontalTextPosition(int textPosition)
    void setVerticalTextPosition(int textPosition)
    
    // 设置标签内容(在标签内)的对其方式(默认左对齐并垂直居中)
    void setHorizontalAlignment(int alignment)
    void setVerticalAlignment(int alignment)
    
    // 设置图片和文本之间的间隙
    void setIconTextGap(int iconTextGap)

     2.2、JButton(按钮)

      JButton 常用构造方法:

    // 创建不带有设置文本或图标的按钮
    JButton button= new JButton();
    // 创建一个带文本的按钮
    JButton button= new JButton(String text);
    // 创建一个带图标的按钮
    JButton button= new JButton(Icon icon);

      JButton 常用方法:

    // 设置按钮的 文本、字体 和 字体颜色
    void setText(String text)
    void setFont(Font font)
    void setForeground(Color fg)
    
    // 设置按钮是否可用
    void setEnabled(boolean enable)
    
    // 设置按钮在 默认、按下、不可用 时显示的图片
    void setIcon(Icon defaultIcon)
    void setPressedIcon(Icon pressedIcon)
    void setDisabledIcon(Icon disabledIcon)

      JButton 常用监听器:

     button.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                    
                }
     });

     2.3、JTextField(文本框)

      JTextField 用来编辑单行的文本。

      JTextField 的常用方法:

    // 获取文本框中的文本
    String getText()
    
    // 设置文本框的 文本、字体 和 字体颜色
    void setText(String text)
    void setFont(Font font)
    void setForeground(Color fg)
    
    // 设置颜色,分别为: 光标颜色、呈现选中部分的背景颜色、选中部分文本的颜色、不可用时文本的颜色
    void setCaretColor(Color c)
    void setSelectionColor(Color c)
    void setSelectedTextColor(Color c)
    void setDisabledTextColor(Color c)
    
    // 设置文本内容的水平对齐方式
    void setHorizontalAlignment(int alignment)
    
    // 设置文本框是否可编辑
    void setEditable(boolean b)

     2.4、JPasswordField(密码框)

      JPasswordField 继承自 JTextField,只是显示输入的内容时用特定的字符替换显示(例如 * 或 ●),用法和 JTextField 基本一致。

     2.5、JTextArea(文本区域)

      JTextArea 用来编辑多行的文本。JTextArea 除了允许多行编辑外,其他基本用法和 JTextField 基本一致。

      JTextArea 常用方法:

    // 是否自动换行,默认为 false
    void setLineWrap(boolean wrap)
    
    // 设置自动换行方式。如果为 true,则将在单词边界(空白)处换行; 如果为 false,则将在字符边界处换行。默认为 false。
    void setWrapStyleWord(boolean word)
    
    // 获取文本框中的文本
    String getText()
    
    // 追加文本到文档末尾
    void append(String str)
    
    // 替换部分文本
    void replaceRange(String str, int start, int end)
    
    // 设置文本框的 文本、字体 和 字体颜色
    void setText(String text)
    void setFont(Font font)
    void setForeground(Color fg)
    
    // 获取内容的行数(以换行符计算,满行自动换下一行不算增加行数)
    int getLineCount()
    
    // 获取指定行(行数从0开始)的行尾(包括换行符)在全文中的偏移量
    int getLineEndOffset(int line)
    
    // 获取指定偏移量所在的行数(行数从0开始)
    int getLineOfOffset(int offset)
    
    // 设置颜色,分别为: 光标颜色、呈现选中部分的背景颜色、选中部分文本的颜色、不可用时文本的颜色
    void setCaretColor(Color c)
    void setSelectionColor(Color c)
    void setSelectedTextColor(Color c)
    void setDisabledTextColor(Color c)

    三、Graphics 类

      Graphics 类相当于一个画布,每个 Swing 组件都通过 Graphics 对象来绘制显示。绘制线段、矩形、椭圆/圆弧/扇形、图片、文本

    • 线段 / 折线:
    // 绘制一条线段(如果两点为同一点,则绘制点)
    void drawLine(int x1, int y1, int x2, int y2)
    // 根据给定的多个点坐标绘制折线
    void drawPolyline(int xPoints[], int yPoints[], int nPoints)
    • 矩形 :
    // 绘制一个矩形(空心)
    void drawRect(int x, int y, int width, int height)
    // 填充一个矩形(实心)
    void fillRect(int x, int y, int width, int height)
    
    // 绘制一个圆角矩形
    void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
    // 填充一个圆角矩形
    void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
    
    // 绘制一个3D矩形
    void draw3DRect(int x, int y, int width, int height, boolean raised)
    // 填充一个3D矩形
    void fill3DRect(int x, int y, int width, int height, boolean raised)
    • 圆弧 / 扇形:
    // 绘制一个圆弧(弧线)
    void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)
    // 填充一个圆弧(扇形)
    void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)
    • 椭圆:
    // 绘制一个椭圆
    void drawOval(int x, int y, int width, int height)
    // 填充一个椭圆
    void fillOval(int x, int y, int width, int height)

    四、Java 图片操作

      读取图片

      方法一: 通过 java.awt.Toolkit 工具类来读取本地、网络 或 内存中 的 图片(支持 GIF、JPEG 或 PNG)

    Image image = Toolkit.getDefaultToolkit().getImage(String filename);
    Image image = Toolkit.getDefaultToolkit().getImage(URL url);
    Image image = Toolkit.getDefaultToolkit().createImage(byte[] imageData);

      方法二: 通过 javax.imageio.ImageIO 工具类读取本地、网络 或 内存中 的 图片(BufferedImage 继承自 Image)

    BufferedImage bufImage = ImageIO.read(File input);
    BufferedImage bufImage = ImageIO.read(URL input);
    BufferedImage bufImage = ImageIO.read(InputStream input);

      

       通过Graphics 的 绘制方法设置图片为背景

      

    JPanel jPanel = new javax.swing.JPanel() {
                @Override
                public void paintComponent(Graphics g) {
                    super.paintComponent(g);
                    ImageIcon ii = new ImageIcon("C:\\Users\\Administrator\\Desktop\\timg2.jpg");
                    g.drawImage(ii.getImage(), 0, 0, getWidth(), getHeight(), ii.getImageObserver());
                }
    };
  • 相关阅读:
    (收藏)Wp7开发中文网站
    (收藏)Andriod中文翻译组
    (1) BlackBerry 环境的配置:安装standalone版的BlackBerry安装包
    (2)把BlackBerry作为插件安装到已有的Eclipse中
    (收藏)一个很不错的编程网站
    Android Architecture
    在Eclipse Android中设置模拟器屏幕大小
    (收藏)C#网站
    (Android) Binding to Data with AdapterView
    ListView 的理解
  • 原文地址:https://www.cnblogs.com/crc01/p/12218304.html
Copyright © 2011-2022 走看看