按方位分为 5 个区域(东、西、南、北、中),每个区域放置一个组件。
JPanel panel = new JPanel(new BorderLayout());
它以矩形网格形式对容器的组件进行布置,把容器按行列分成大小相等的矩形网格,一个网格中放置一个组件,组件宽高自动撑满网格。
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 的align属性确定,它可能的值如下:
JPanel panel = new JPanel(new FlowLayout());
JPanel panel = new JPanel(new FlowLayout(int align));
JPanel panel = new JPanel(new FlowLayout(int align, int hgap, int vgap));
绝对布局没有特定一个布局管理器类来表示,给容器的布局管理器设置为 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);
组件的常用方法
// 设置文本的字体类型、样式 和 大小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)
标签主要用于展示 文本 或 图片,也可以 同时显示文本和图片。
/*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);
// 设置 文本 和 图片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)
// 创建不带有设置文本或图标的按钮JButton button= new JButton();// 创建一个带文本的按钮JButton button= new JButton(String text);// 创建一个带图标的按钮JButton button= new JButton(Icon icon);
// 设置按钮的 文本、字体 和 字体颜色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)
button.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { } });
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)
JPasswordField 继承自 JTextField,只是显示输入的内容时用特定的字符替换显示(例如 * 或 ●),用法和 JTextField 基本一致。
JTextArea 用来编辑多行的文本。JTextArea 除了允许多行编辑外,其他基本用法和 JTextField 基本一致。
// 是否自动换行,默认为 falsevoid 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 类相当于一个画布,每个 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.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()); }};来源:https://www.icode9.com/content-1-617851.html
联系客服