swing各组件重绘外观

来源:互联网 发布:淘宝10天不发货会怎样 编辑:程序博客网 时间:2024/04/28 14:16

JPanle、JButton、JLabel等等组件,若想实现漂亮的外观,可以通过实现paintComponent(Graphics g)来完成。

示例:自定义JButton的鼠标经过与鼠标离开的效果。

一、新建NewButton类

package background;import java.awt.Graphics;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.ImageIcon;import javax.swing.JButton;public class NewButton extends JButton {ImageIcon icon = null;public NewButton(){setBorder(null);//取消边框icon = new ImageIcon("button1.png");this.addMouseListener(new MouseAdapter() {@Overridepublic void mouseExited(MouseEvent e) {//鼠标离开icon = new ImageIcon("button1.png");repaint();//重绘图形,调用paintComponent}@Overridepublic void mouseEntered(MouseEvent e) {//鼠标经过icon = new ImageIcon("button2.png");repaint();}});}public void paintComponent(Graphics g){int x=0,y=0;g.drawImage(icon.getImage(), x, y, 95, 32, this);}}

二、主窗口JFrameDemo

package background;import javax.swing.ImageIcon;import javax.swing.JFrame;public class JFrameDemo extends JFrame {public JFrameDemo(){super("Jpanel Background Demo");//窗口标题NewButton b2 = new NewButton();this.getContentPane().add(b2);//将button加入窗口this.setSize(95, 32);this.setLocationRelativeTo(null);//设置窗口居中this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}/** * @param args */public static void main(String[] args) {new JPanelDemo();}}

通过实现paintComponent可以实现各个组件的自定义外观。

原创粉丝点击