java 重写paint_java笔记 重写paintComponent方法以实现jPanel加背景
N年不用java寫圖形界面,但想了想,在點擊事件中給上邊圖形重繪的方法重新來一遍應該可行。代碼如下:
package com.yimik.test.swing;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class BackgroundTest extends JFrame{
private static final long serialVersionUID = 1L;
private JButton b;
private JPanel p ;
public BackgroundTest() {
p = new MyPanel();
p.setBounds(0, 0, 500,200);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setSize(500, 500);
this.setVisible(true);
this.setLayout(null);
this.add(p);
b = new JButton("點擊換背景");
b.setBounds(0, 300, 100, 30);
this.add(b);
b.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
ImageIcon image=new ImageIcon(getClass().getResource("/imgs/img2.jpg"));
image.setImage(image.getImage().getScaledInstance(p.getWidth(),p.getHeight(),Image.SCALE_FAST));
image.paintIcon(p, p.getGraphics(),0, 0);
}
});
}
public static void main(String[] args) {
new BackgroundTest();
}
}
class MyPanel extends JPanel{
private static final long serialVersionUID = 1L;
@Override
protected void paintComponent(Graphics g){//重寫paintComponent方法以實現jPanel加背景
super.paintComponent(g);
ImageIcon image=new ImageIcon(getClass().getResource("/imgs/img1.jpg")); //獲取圖像
image.setImage(image.getImage().getScaledInstance(this.getWidth(),this.getHeight(),Image.SCALE_FAST)); //調整圖像的分辨率以適應容器
image.paintIcon(this, g,0, 0);
}
}
總結
以上是生活随笔為你收集整理的java 重写paint_java笔记 重写paintComponent方法以实现jPanel加背景的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java 同一个package impo
- 下一篇: java获取hdfs总大小_如何获取出H