title: javaSwing修改界面背景,你真的还说swing界面丑吗
date: 2020-07-03
tags:
- java
- 技巧
- swing
categories: - java
- swing
javaSwing修改界面背景,你真的还说swing界面丑吗
what都0202年了,你还在使用swing,javafx难道不香吗?
what你还在研究java的图形化界面,C#不是更香吗?
我喜欢,我乐意怎么着(略略,不过确实java加上css界面确实香,不过学校为什么就教swing呢)
不过我们还是回到正题,javaswing怎么添加背景。有两个方法,一个是最老套的方法。把背景图片加到标签(JLabel)里面,然后让标签和界面同大。
不过我们讲另外一个方法,你知道 paint() 函数吗。
public void paint(Graphics g)
由 Swing 自动调用调用,以绘制组件。应用程序不应直接调用 paint,而是应该使用 repaint 方法来安排重绘组件。
就是说这个函数是一个自动被调用的函数,那他有什么用呢?
画图
这就是他最大的用,里面 Graphics g中的g,可以理解为一个画笔(用过python里面的海龟绘图吗,有点点类似哦)
以下是他自带的方法
abstract void |
**[clearRect](../../java/awt/Graphics.html#clearRect(int, int, int, int))**(int x, int y, int width, int height) 通过使用当前绘图表面的背景色进行填充来清除指定的矩形。 |
---|---|
abstract void |
**[clipRect](../../java/awt/Graphics.html#clipRect(int, int, int, int))**(int x, int y, int width, int height) 将当前剪贴区与指定的矩形相交。 |
abstract void |
**[copyArea](../../java/awt/Graphics.html#copyArea(int, int, int, int, int, int))**(int x, int y, int width, int height, int dx, int dy) 将组件的区域复制到由 dx 和 dy 指定的距离处。 |
abstract Graphics |
**[create](../../java/awt/Graphics.html#create())**() 创建一个新的 Graphics 对象,它是此 Graphics 对象的副本。 |
Graphics |
**[create](../../java/awt/Graphics.html#create(int, int, int, int))**(int x, int y, int width, int height) 基于此 Graphics 对象创建一个新的 Graphics 对象,但是使用新的转换和剪贴区域。 |
abstract void |
**[dispose](../../java/awt/Graphics.html#dispose())**() 释放此图形的上下文以及它使用的所有系统资源。 |
void |
**[draw3DRect](../../java/awt/Graphics.html#draw3DRect(int, int, int, int, boolean))**(int x, int y, int width, int height, boolean raised) 绘制指定矩形的 3-D 高亮显示边框。 |
abstract void |
**[drawArc](../../java/awt/Graphics.html#drawArc(int, int, int, int, int, int))**(int x, int y, int width, int height, int startAngle, int arcAngle) 绘制一个覆盖指定矩形的圆弧或椭圆弧边框。 |
void |
**[drawBytes](../../java/awt/Graphics.html#drawBytes(byte[], int, int, int, int))**(byte[] data, int offset, int length, int x, int y) 使用此图形上下文的当前字体和颜色绘制由指定 byte 数组给定的文本。 |
void |
**[drawChars](../../java/awt/Graphics.html#drawChars(char[], int, int, int, int))**(char[] data, int offset, int length, int x, int y) 使用此图形上下文的当前字体和颜色绘制由指定字符数组给定的文本。 |
abstract boolean |
**[drawImage](../../java/awt/Graphics.html#drawImage(java.awt.Image, int, int, java.awt.Color, java.awt.image.ImageObserver))**(Image img, int x, int y, Color bgcolor, ImageObserver observer) 绘制指定图像中当前可用的图像。 |
abstract boolean |
**[drawImage](../../java/awt/Graphics.html#drawImage(java.awt.Image, int, int, java.awt.image.ImageObserver))**(Image img, int x, int y, ImageObserver observer) 绘制指定图像中当前可用的图像。 |
abstract boolean |
**[drawImage](../../java/awt/Graphics.html#drawImage(java.awt.Image, int, int, int, int, java.awt.Color, java.awt.image.ImageObserver))**(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer) 绘制指定图像中已缩放到适合指定矩形内部的图像。 |
abstract boolean |
**[drawImage](../../java/awt/Graphics.html#drawImage(java.awt.Image, int, int, int, int, java.awt.image.ImageObserver))**(Image img, int x, int y, int width, int height, ImageObserver observer) 绘制指定图像中已缩放到适合指定矩形内部的图像。 |
abstract boolean |
**[drawImage](../../java/awt/Graphics.html#drawImage(java.awt.Image, int, int, int, int, int, int, int, int, java.awt.Color, java.awt.image.ImageObserver))**(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer) 绘制当前可用的指定图像的指定区域,动态地缩放图像使其符合目标绘制表面的指定区域。 |
abstract boolean |
**[drawImage](../../java/awt/Graphics.html#drawImage(java.awt.Image, int, int, int, int, int, int, int, int, java.awt.image.ImageObserver))**(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer) 绘制当前可用的指定图像的指定区域,动态地缩放图像使其符合目标绘制表面的指定区域。 |
abstract void |
**[drawLine](../../java/awt/Graphics.html#drawLine(int, int, int, int))**(int x1, int y1, int x2, int y2) 在此图形上下文的坐标系中,使用当前颜色在点 (x1, y1) 和 (x2, y2) 之间画一条线。 |
abstract void |
**[drawOval](../../java/awt/Graphics.html#drawOval(int, int, int, int))**(int x, int y, int width, int height) 绘制椭圆的边框。 |
abstract void |
**[drawPolygon](../../java/awt/Graphics.html#drawPolygon(int[], int[], int))**(int[] xPoints, int[] yPoints, int nPoints) 绘制一个由 x 和 y 坐标数组定义的闭合多边形。 |
void |
**[drawPolygon](../../java/awt/Graphics.html#drawPolygon(java.awt.Polygon))**(Polygon p) 绘制由指定的 Polygon 对象定义的多边形边框。 |
abstract void |
**[drawPolyline](../../java/awt/Graphics.html#drawPolyline(int[], int[], int))**(int[] xPoints, int[] yPoints, int nPoints) 绘制由 x 和 y 坐标数组定义的一系列连接线。 |
void |
**[drawRect](../../java/awt/Graphics.html#drawRect(int, int, int, int))**(int x, int y, int width, int height) 绘制指定矩形的边框。 |
abstract void |
**[drawRoundRect](../../java/awt/Graphics.html#drawRoundRect(int, int, int, int, int, int))**(int x, int y, int width, int height, int arcWidth, int arcHeight) 用此图形上下文的当前颜色绘制圆角矩形的边框。 |
abstract void |
**[drawString](../../java/awt/Graphics.html#drawString(java.text.AttributedCharacterIterator, int, int))**(AttributedCharacterIterator iterator, int x, int y) 依据 TextAttribute 类的规范应用指定迭代器的属性,呈现迭代器的文本。 |
abstract void |
**[drawString](../../java/awt/Graphics.html#drawString(java.lang.String, int, int))**(String str, int x, int y) 使用此图形上下文的当前字体和颜色绘制由指定 string 给定的文本。 |
void |
**[fill3DRect](../../java/awt/Graphics.html#fill3DRect(int, int, int, int, boolean))**(int x, int y, int width, int height, boolean raised) 绘制一个用当前颜色填充的 3-D 高亮显示矩形。 |
abstract void |
**[fillArc](../../java/awt/Graphics.html#fillArc(int, int, int, int, int, int))**(int x, int y, int width, int height, int startAngle, int arcAngle) 填充覆盖指定矩形的圆弧或椭圆弧。 |
abstract void |
**[fillOval](../../java/awt/Graphics.html#fillOval(int, int, int, int))**(int x, int y, int width, int height) 使用当前颜色填充外接指定矩形框的椭圆。 |
abstract void |
**[fillPolygon](../../java/awt/Graphics.html#fillPolygon(int[], int[], int))**(int[] xPoints, int[] yPoints, int nPoints) 填充由 x 和 y 坐标数组定义的闭合多边形。 |
void |
**[fillPolygon](../../java/awt/Graphics.html#fillPolygon(java.awt.Polygon))**(Polygon p) 用图形上下文的当前颜色填充指定 Polygon 对象定义的多边形。 |
abstract void |
**[fillRect](../../java/awt/Graphics.html#fillRect(int, int, int, int))**(int x, int y, int width, int height) 填充指定的矩形。 |
abstract void |
**[fillRoundRect](../../java/awt/Graphics.html#fillRoundRect(int, int, int, int, int, int))**(int x, int y, int width, int height, int arcWidth, int arcHeight) 用当前颜色填充指定的圆角矩形。 |
void |
**[finalize](../../java/awt/Graphics.html#finalize())**() 一旦不再引用此图形上下文就释放它。 |
abstract Shape |
**[getClip](../../java/awt/Graphics.html#getClip())**() 获取当前剪贴区域。 |
abstract Rectangle |
**[getClipBounds](../../java/awt/Graphics.html#getClipBounds())**() 返回当前剪贴区域的边界矩形。 |
Rectangle |
**[getClipBounds](../../java/awt/Graphics.html#getClipBounds(java.awt.Rectangle))**(Rectangle r) 返回当前剪贴区域的边界矩形。 |
Rectangle |
**[getClipRect](../../java/awt/Graphics.html#getClipRect())**() 已过时。 从 JDK version 1.1 开始,由 getClipBounds() 取代。 |
abstract Color |
**[getColor](../../java/awt/Graphics.html#getColor())**() 获取此图形上下文的当前颜色。 |
abstract Font |
**[getFont](../../java/awt/Graphics.html#getFont())**() 获取当前字体。 |
FontMetrics |
**[getFontMetrics](../../java/awt/Graphics.html#getFontMetrics())**() 获取当前字体的字体规格。 |
abstract FontMetrics |
**[getFontMetrics](../../java/awt/Graphics.html#getFontMetrics(java.awt.Font))**(Font f) 获取指定字体的字体规格。 |
boolean |
**[hitClip](../../java/awt/Graphics.html#hitClip(int, int, int, int))**(int x, int y, int width, int height) 如果指定的矩形区域与当前的剪贴区域相交,则返回 true。 |
abstract void |
**[setClip](../../java/awt/Graphics.html#setClip(int, int, int, int))**(int x, int y, int width, int height) 将当前剪贴区设置为由给定坐标指定的矩形。 |
abstract void |
**[setClip](../../java/awt/Graphics.html#setClip(java.awt.Shape))**(Shape clip) 将当前剪贴区域设置为任意的剪贴形状。 |
abstract void |
**[setColor](../../java/awt/Graphics.html#setColor(java.awt.Color))**(Color c) 将此图形上下文的当前颜色设置为指定颜色。 |
abstract void |
**[setFont](../../java/awt/Graphics.html#setFont(java.awt.Font))**(Font font) 将此图形上下文的字体设置为指定字体。 |
abstract void |
**[setPaintMode](../../java/awt/Graphics.html#setPaintMode())**() 设置将此图形上下文的绘图模式,以便通过此图形上下文中的当前颜色来覆盖目标。 |
abstract void |
**[setXORMode](../../java/awt/Graphics.html#setXORMode(java.awt.Color))**(Color c1) 将此图形上下文的绘图模式设置为在此图形上下文的当前颜色和新的指定颜色之间交替。 |
String |
**[toString](../../java/awt/Graphics.html#toString())**() 返回表示此 Graphics 对象值的 String 对象。 |
abstract void |
**[translate](../../java/awt/Graphics.html#translate(int, int))**(int x, int y) 将图形上下文的原点平移到当前坐标系中的点 (x, y)。 |
利用 paint() 方法,调用画笔来画背景。
- 引入一个图片
ImageIcon img = new ImageIcon("src/img.jpg");
-
然后全部代码直接贴出(不废话)
import javax.swing.*; import java.awt.*; public class addBackground { public static void main(String[] args) { JFrame jFrame = new JFrame(); jFrame.setSize(500,500); jFrame.setContentPane(new background()); jFrame.setVisible(true); jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } static class background extends JPanel{ ImageIcon img = new ImageIcon("src/img.jpg"); @Override public void paint(Graphics g) { super.paint(g); g.drawImage(img.getImage(),0,0,500,500,null); //g.drawImage(图片,x坐标,y坐标,宽,长,null); } } }
-
效果图 (哦!!!我的上帝呀,完美的背景给画了出来)
- 然后你们可以在她的身体上随便添加什么了(我说的是按钮之类的组件啥的,你们不要ghs呀)