至少有兩種方案可以實(shí)現(xiàn):

我們提供的服務(wù)有:做網(wǎng)站、網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、松江ssl等。為近1000家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的松江網(wǎng)站制作公司
第一是使用背景圖片,就是給Linearlayout添加一個(gè)background屬性,值選擇一張帶漸變顏色的圖片即可。
第二種方案是使用獨(dú)立的顏色代碼來(lái)替代上述一種的背景圖片,比如可以在res/drawable下新建一個(gè)mycolor.xml,然后再在LinearLayout添加屬性
android:background="@drawable/mycolor"即可
?xml?version="1.0"?encoding="utf-8"?
shape?xmlns:android="
gradient
android:angle="270"
android:centerColor="#00FFFF"
android:centerX="0.5"
android:centerY="0。3"
android:endColor="#666666"
android:startColor="#0099FF"?/
padding
android:bottom="7dp"
android:left="7dp"
android:right="7dp"
android:top="7dp"?/
corners?android:radius="4dp"?/
/shape
解析:其中android:angle ="270.0"代表角度為270,由上到下的漸變,如果我改變成0那么就變成了從左到右的漸變,如果改變90.0那么漸變會(huì)從下邊往上漸變,可以 多改變一下參數(shù)試試效果。centerColor中間顏色; centerX: x軸漸變中心,從左到右漸變時(shí)有意義;centerY: 同理y軸的漸變中心;endColor 漸變終點(diǎn)顏色,同樣startColor為漸變起點(diǎn)顏色。
上述代碼效果如下:
調(diào)用需要設(shè)置顏色的控件的setBackgroud();方法就可以了。
但是設(shè)置JFrame和JLabel的背景色,一般就是下面的做法
JFrame frame = new JFrame();
frame.setBackground(Color.Red);
JLabel l = new JLabel();
l.setBackground(Color.Yellow);
frame.add(l);
結(jié)果根本就沒(méi)有反應(yīng)。這是由于Swing跟AWT有千絲萬(wàn)縷的聯(lián)系,它既要支持AWT又要有自己新的體系,所以呢,這個(gè)如果對(duì)于AWT中的Frame是可以直接通過(guò)setBackground來(lái)設(shè)置背景色,但是對(duì)于JFrame則不可以,應(yīng)該采用下面的方法:
JFrame frame = new JFrame();
frame.getContentPane().setBackground(Color.Red);
而對(duì)于JLabel來(lái)說(shuō)則要設(shè)置JLabel為不透明的才行,即
JLabel comp = new JLabel(value);
comp.setBackground(color);
comp.setOpaque(true);
這句代碼frame.setBackground(Color.Red);
改變的是框架的顏色,框架的上面還有窗格,所以你要改變窗格的顏色才可以側(cè)低改變框架的顏色
在主函數(shù)里加Containerframe.getContentPane()意思是獲得窗格
? ? ? ? ?setBackground(Color.Red);???????????????????????改變窗格顏色
另外再附一段背景顏色漸變的代碼
運(yùn)行示意圖如下:
import?java.awt.Color;
import?java.awt.GradientPaint;
import?java.awt.Graphics;
import?java.awt.Graphics2D;
import?javax.swing.JPanel;
import?java.awt.BorderLayout;
import?java.awt.EventQueue;
import?javax.swing.JFrame;
import?javax.swing.JPanel;
class?ShadePanel?extends?JPanel?{
private?static?final?long?serialVersionUID?=?-2644424271663261406L;
public?ShadePanel()?{
super();
setLayout(null);
}
@Override
protected?void?paintComponent(Graphics?g1)?{//?重寫繪制組件外觀
Graphics2D?g?=?(Graphics2D)?g1;
super.paintComponent(g);//?執(zhí)行超類方法
int?width?=?getWidth();//?獲取組件大小
int?height?=?getHeight();
//?創(chuàng)建填充模式對(duì)象
GradientPaint?paint?=?new?GradientPaint(0,?0,?Color.CYAN,?0,?height,
Color.MAGENTA);
g.setPaint(paint);//?設(shè)置繪圖對(duì)象的填充模式
g.fillRect(0,?0,?width,?height);//?繪制矩形填充控件界面
}
}
public?class?ShadeBackgroundImage?extends?JFrame?{
private?static?final?long?serialVersionUID?=?4693799019369193520L;
private?JPanel?contentPane;
public?static?void?main(String[]?args)?{
EventQueue.invokeLater(new?Runnable()?{
public?void?run()?{
try?{
ShadeBackgroundImage?frame?=?new?ShadeBackgroundImage();
frame.setVisible(true);
}?catch?(Exception?e)?{
e.printStackTrace();
}
}
});
}
public?ShadeBackgroundImage()?{
setTitle("背景為漸變色的主界面");//?設(shè)置窗體標(biāo)題
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100,?100,?450,?300);
contentPane?=?new?JPanel();//?創(chuàng)建內(nèi)容面板
contentPane.setLayout(new?BorderLayout(0,?0));
setContentPane(contentPane);
ShadePanel?shadePanel?=?new?ShadePanel();//?創(chuàng)建漸變背景面板
contentPane.add(shadePanel,?BorderLayout.CENTER);//?添加面板到窗體內(nèi)容面板
}
}
用定時(shí)器不行么?
順便寫了個(gè),參考而已
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.Timer;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.event.ActionListener;
public class TestA extends JFrame implements ActionListener {
//-----要實(shí)現(xiàn)ActionListener接口
public Timer t;
public JButton jb;
//-----一個(gè)定時(shí)器一個(gè)按鈕用來(lái)顯示變色效果
public int red = 0;
public int green = 0;
public int blue = 0;
public TestA() {
jb = new JButton("test");
jb.setBackground(Color.BLUE);
//-----定時(shí)器設(shè)置為0.2秒觸發(fā)1次事件
t = new Timer(200, this);
this.setSize(200, 200);
this.getContentPane().add(jb);
this.setVisible(true);
//-----定時(shí)器開始運(yùn)行
this.t.start();
}
public void actionPerformed(ActionEvent e) {
red += 5;
green += 10;
blue += 15;
red %= 255;
green %= 255;
blue %= 255;
//-----三種顏色按你所需搞個(gè)漸變的規(guī)則
this.jb.setBackground(new Color(red, green, blue));
this.jb.setVisible(true);
}
public static void main(String[] _s) {
TestA a = new TestA();
}
}
給你需要變色的元件掛個(gè)定時(shí)器。
網(wǎng)站欄目:java顏色漸變的代碼 顏色代碼漸變色
本文鏈接:http://chinadenli.net/article40/hhjsho.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、網(wǎng)站排名、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、ChatGPT、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)