JavaFX之setBackground()设置组件背景颜色

Javafx设置背景颜色不如swing 方便,在对图形设置颜色时可以使用setFill方法

对标签(label),按钮(button)这些组件设置背景颜色时,就可以用到setBackground方法

废话不多少,先奉上我自己写的代码:

/**
	 * 设置一个或多个组件的大小和背景颜色
	 * @param prefWidth用于设置组件的宽
	 * @param prefHeight 用于设置组件的长
	 * @param backgroundColor 用于设置的背景颜色
	 * @param controls 一个或多个组件,如果没有,那么该语句相当于不存在
	 */
	public void setCommpentSizeAndColor(double prefWidth,double prefHeight,Color backgroundColor, Control...controls){
		setCommpentSize(prefWidth,prefHeight,controls);
		setCommpentColor(backgroundColor,controls);
	}
	/**
	 * 设置一个或多个组件的大小
	 * @param prefWidth 用于设置组件的宽
	 * @param prefHeight 用于设置组件的长
	 * @param controls 一个或多个组件,如果没有,那么该语句相当于不存在
	 */
	public void setCommpentSize(double prefWidth,double prefHeight, Control...controls){
		for(int i = 0; i < controls.length; i++){
			if(controls[i] instanceof Label){
				controls[i] = (Label)controls[i];
				((Label) controls[i]).setAlignment(Pos.CENTER);//设置字体居中
			}
			else if(controls[i] instanceof Button)
				controls[i] = (Button)controls[i];
			controls[i].setPrefSize(prefWidth, prefHeight);
		}
	}
	/**
	 * 设置一个或多个组件的背景颜色
	 * @param backgroundColor 用于设置的背景颜色
	 * @param controls 一个或多个组件,如果没有,那么该语句相当于不存在
	 */
	public void setCommpentColor(Color backgroundColor, Control...controls){
		for(int i = 0; i < controls.length; i++){
			controls[i].setBackground(new Background(new BackgroundFill(backgroundColor,null,null)));
		}		
	}
解释一下:

用点操作符,点出setBackground方法,系统会提示你,它的参数为Background类型,但是我们并不知道Background是什么东西,不知道就试呗,Background点,

发现点不出什么东西来,那就new吧,然后你会发现new出来没有参数的构造方法报错了,于是看报的什么错,一看就知道,Background有一个带有BackgroundFill参数

的构造方法,于是我们大胆地又new一个BackgroundFill,同样的它也会报错,然后我们看一下提示信息,他会提示你添加相关参数,其中第一个参数就是背景颜色,

后面两个为null的,本人还没怎么看懂,但没多大影响,如果大家有兴趣,可以去理解一下


Control...controls中间的3个点表示传入任意个Control类型的参数

Control是大多数组件的父类

你可能感兴趣的:(JavaFX)