java 圆形按钮,JAVA图形界面问题

伊诗塔 发布于 2015/03/09 20:37
阅读 1K+
收藏 0

我准备弄一个圆形按钮,参考网上的代码写了之后却总是显示不出来。不只懂哪里出了问题,希望大家帮忙看看解决一下。

class CircleButton extends JButton{
	Shape shape;
	Color bgColor = SystemColor.control;
	public CircleButton(String label,Color bgColor){
		//调用父类的构造方法
		super(label);
		if(bgColor != null){
			this.bgColor = bgColor;
		}
		//Dimension类用来封装单个对象中组件的宽度和高度
		Dimension size = this.getPreferredSize();
		size.height = size.width = Math.max(size.width, size.height);
		//设置宽高等距
		this.setPreferredSize(size);
		//使jbutton不画背景,即不显示方形背景,而允许我们画一个圆的背景
		this.setContentAreaFilled(false);
		//不绘制边框
		this.setBorderPainted(false);
		//不绘制焦点状态
		this.setFocusPainted(false);
	}
	
	protected void paintComponent(Graphics g){
		
	      g.setColor(java.awt.SystemColor.controlShadow);
	      g.setColor(this.bgColor); // 设置背景颜色
	    
		  //fillOval方法画一个矩形的内切椭圆,并且填充这个椭圆
		  //当矩形为正方形时,画出的椭圆便是圆
	      g.fillOval(0, 0, this.getSize().width-1, this.getSize().height-1);
	    //调用父类的paintComponent画按钮的标签和焦点所在的小矩形
	      super.paintComponent(g);
	}
	
	//用简单的弧充当按钮的边界
	 //用简单的弧充当按钮的边界
	 protected void paintBorder(Graphics g){
	      g.setColor(SystemColor.controlShadow);
	      //drawOval方法画矩形的内切椭圆,但不填充,只画出一个边界
	      g.drawOval(0,0,getSize().width-1,getSize().height-1);
	      super.paintComponent(g);
	 }
}

public class GameUi{
	private JFrame gameFrame = new JFrame();
	//创建一个圆形按钮
	CircleButton cirPlay = new CircleButton("Play", Color.BLUE);
	//开始游戏按钮
	private JButton play = new JButton(new ImageIcon(this.getClass().getResource("/play.png")));
	int frameWidth = 330;
	int frameHeight = 600;

	public void init(){
		//play.paint(g);
		gameFrame.setSize(frameWidth, frameHeight);
		//gameFrame.setBackground(Color.BLACK);
		
		gameFrame.setResizable(false);
		//创建一个装载文本框、按钮的JPanel
		JPanel gamePanel = new JPanel();
		gamePanel.setBackground(Color.BLACK);
		//设置JPanel的大小,没有这句的话就无法改变panel的大小,也就是绝对定位
		gamePanel.setLayout(null);
		//设置按钮的大小和位置
		play.setBounds(140, 440, 45, 45);
		//添加一个按钮
		gamePanel.add(play);
		gamePanel.add(cirPlay);
		//在FRAME中添加PANEL
		gameFrame.add(gamePanel);
		gameFrame.setVisible(true);
	}
	
	public static void main(String[] args){
		GameUi gu = new GameUi();
		gu.init();
	}
}



加载中
返回顶部
顶部