【无标题】关于 setBorder 和 BorderFactory

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

import javax.swing.*;
public class testI extends JFrame{
	PanelI panel1,panel2,panel3,panel4;

	testI(){
		new JFrame_Show(this, "测试坐标");
		setLayout(new GridLayout(2, 2,5,5));
		panel1 = new PanelI();panel2 = new PanelI();panel3 = new PanelI();panel4 = new PanelI();
		panel1.setBackground(new Color(206,180,176));panel4.setBackground(new Color(206,180,176));
		panel1.setBackground(new Color(177,137,245));panel4.setBackground(new Color(177,137,245));
		add(panel1);add(panel2);add(panel3);add(panel4);
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SwingUtilities.invokeLater(() ->{
			new testI().setVisible(true);
		});
	}
	
	private class PanelI extends JPanel{
		int x=0;
		int y=0;
		String s="X:0 Y:0";
		PanelI(){
			
			setBorder(BorderFactory.createLineBorder(Color.RED));
			addMouseMotionListener(new MouseMotionListener() {
				
				@Override
				public void mouseMoved(MouseEvent e) {
					// TODO Auto-generated method stub
					x=e.getX();
					y = e.getY();
					s="X: "+x+" Y: "+y;
					repaint();
				}
				
				@Override
				public void mouseDragged(MouseEvent e) {
					// TODO Auto-generated method stub
					
				}
			});
		}
		
		@Override
		protected void paintComponent(Graphics g) {
			// TODO Auto-generated method stub
			super.paintComponent(g);
			Graphics2D g2 = (Graphics2D)g;
			g2.setColor(Color.RED);
			g2.setFont(new Font("楷体", Font.BOLD, 24));
			g2.drawString(s, 10, 50);
			
		}
	}
	
	@Override
	public void paint(Graphics g) {
		// TODO Auto-generated method stub
		super.paint(g);
		Graphics2D g2 =(Graphics2D)g;
		g2.setColor(Color.RED);
		g2.setFont(new Font("楷体", Font.BOLD, 24));
		g2.drawString("测试", 300, 300);
		
	}

}

效果

  • setBorder():这是给组件(比如你的面板)设置边框的方法,就像给相框加个边框一样
  • BorderFactory.createTitledBorder("hello"):这是工厂(Factory)生产了一个带标题的边框,标题是"hello"

BorderFactory 是什么?

想象一下 BorderFactory 就像一个边框工厂,专门生产各种款式的边框:

  • 它是Swing框架中的一个工具类
  • 就像乐高工厂生产各种积木一样,它生产各种边框
  • 好处是:你不用自己从头造边框,直接"下单"就能得到现成的

边框工厂能生产哪些产品?

这个工厂可厉害了,能生产多种"边框款式":

  1. 普通边框​:

    • createLineBorder(Color.RED) - 红色实线边框
    • createEtchedBorder() - 3D凹陷效果的边框
  2. 带标题的边框​:

    • createTitledBorder("标题") - 就是你用的这种,带文字说明
    • 可以设置标题位置、字体、颜色等
  3. 花式边框​:

    • createRaisedBevelBorder() - 凸起的3D边框
    • createLoweredBevelBorder() - 凹陷的3D边框
    • createMatteBorder() - 可以设置不同宽度的边框
  4. 组合边框​:

    • createCompoundBorder() - 可以把两个边框组合在一起,像三明治一样

记住:BorderFactory 就像边框界的"宜家",想要什么边框款式,直接去"买"就行,不用自己动手做! 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值