Java学习之旅1

1.圆角按钮的设置

import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.geom.RoundRectangle2D;

import javax.swing.JButton;

public class RButton extends JButton {
	private static final long serialVersionUID = 39082560987930759L;
	public static final Color BUTTON_COLOR1 = new Color(250, 160, 122);
	public static final Color BUTTON_COLOR2 = new Color(255, 0, 0);
	// public static final Color BUTTON_COLOR1 = new Color(125, 161, 237);
	// public static final Color BUTTON_COLOR2 = new Color(91, 118, 173);
	public static final Color BUTTON_FOREGROUND_COLOR = Color.WHITE;
	private boolean hover;

	public RButton(String name) {
		this.setText(name);
		setFont(new Font("system", Font.PLAIN, 12));//字体格式
		setBorderPainted(false);//无边框
		setForeground(BUTTON_COLOR2);
		setFocusPainted(false);//隐藏按钮focus边框
		setContentAreaFilled(false);//按钮透明
		addMouseListener(new MouseAdapter() {
			@Override
			public void mouseEntered(MouseEvent e) {//添加鼠标进入监听
				setForeground(BUTTON_FOREGROUND_COLOR);
				hover = true;
				repaint();
			}

			@Override
			public void mouseExited(MouseEvent e) {//添加鼠标离开监听
				setForeground(BUTTON_COLOR2);
				hover = false;
				repaint();
			}
		});
	}

	@Override
	protected void paintComponent(Graphics g) {//重绘button产生圆角
		Graphics2D g2d = (Graphics2D) g.create();
		int h = getHeight();
		int w = getWidth();
		float tran = 1F;
		if (!hover) {
			tran = 0.3F;
		}

		g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
		GradientPaint p1;
		GradientPaint p2;
		if (getModel().isPressed()) {
			p1 = new GradientPaint(0, 0, new Color(0, 0, 0), 0, h - 1, new Color(100, 100, 100));
			p2 = new GradientPaint(0, 1, new Color(0, 0, 0, 50), 0, h - 3, new Color(255, 255, 255, 100));
		} else {
			p1 = new GradientPaint(0, 0, new Color(100, 100, 100), 0, h - 1, new Color(0, 0, 0));
			p2 = new GradientPaint(0, 1, new Color(255, 255, 255, 100), 0, h - 3, new Color(0, 0, 0, 50));
		}
		g2d.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, tran));
		RoundRectangle2D.Float r2d = new RoundRectangle2D.Float(0, 0, w - 1, h - 1, 20, 20);
		Shape clip = g2d.getClip();
		g2d.clip(r2d);
		GradientPaint gp = new GradientPaint(0.0F, 0.0F, BUTTON_COLOR1, 0.0F, h, BUTTON_COLOR2, true);
		g2d.setPaint(gp);
		g2d.fillRect(0, 0, w, h);
		g2d.setClip(clip);
		g2d.setPaint(p1);
		g2d.drawRoundRect(0, 0, w - 1, h - 1, 20, 20);
		g2d.setPaint(p2);
		g2d.drawRoundRect(1, 1, w - 3, h - 3, 18, 18);
		g2d.dispose();
		super.paintComponent(g);
	}
}

2.标签Jlabel文字自动换行方法:

Jlabel jl=new Jlabel(string);
string 字符串的首尾添加…标签,则自动换行;
如:

JLabel jlabel2 = new JLabel("<html>锄禾日当午,汗滴禾下土。谁知盘中餐,粒粒皆辛苦。</html>");

而在字符串中添加
会在该处强制换行:

JLabel jlabel2 = new JLabel("<html>锄禾日当午,<br>汗滴禾下土。<br>谁知盘中餐,<br>粒粒皆辛苦。</html>");

输出标签结果:
锄禾日当午,
汗滴禾下土。
谁知盘中餐,
粒粒皆辛苦。

3.窗口设置背景图片方法(JDialog同样)

import java.awt.Graphics;
import java.awt.Image;
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class PictureJPanel extends JPanel {
	public URL picture;// 图片位置

	public PictureJPanel(URL s1) {
		this.picture = s1;
	}

	@Override
	public void paintComponent(Graphics g) {
		ImageIcon image = new ImageIcon(picture);
		image.setImage(
				image.getImage().getScaledInstance(this.getWidth(), this.getHeight(), Image.SCALE_AREA_AVERAGING));// 这里设置图片的大小和窗口的大小相等
		g.drawImage(image.getImage(), 0, 0, this);// 在窗口上画出该图片 }}
	}
}

在窗体中调用该方法可完成背景图片的设置

import java.net.URL;
import javax.swing.JFrame;

public class PictureFrame extends JFrame {
	public PictureFrame() {
		setBounds(0, 0, 1000, 500);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setUndecorated(true);// 设置出去窗体右上角最大化、最小化、关闭按钮

		URL url = PictureFrame.class.getResource("/416690300862016439.png");
		PictureJPanel pj = new PictureJPanel(url);
		add(pj);
		
		setVisible(true);
	}

	public static void main(String[] args) {
		PictureFrame pf = new PictureFrame();

	}

}

猜你喜欢

转载自blog.csdn.net/weixin_43710224/article/details/84538489