按方位分为 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 基本一致。
// 是否自动换行,默认为 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 类相当于一个画布,每个 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.cnblogs.com/crc01/p/12218304.html