**************************************************************
成都創(chuàng)新互聯(lián)是一家專注于網(wǎng)站建設、成都網(wǎng)站設計與策劃設計,羅江網(wǎng)站建設哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設十多年,網(wǎng)設計領(lǐng)域的專業(yè)建站公司;建站業(yè)務涵蓋:羅江等地區(qū)。羅江做網(wǎng)站價格咨詢:13518219792
新建一個類ChangeColor.java,代碼如下:
**************************************************************
import?java.awt.Color;
import?java.awt.event.MouseEvent;
import?java.awt.event.MouseMotionListener;
import?javax.swing.JFrame;
/**
*?@author?Godwin
*?@version?2010-05-16
*/
public?class?ChangeColor?extends?JFrame?implements?MouseMotionListener?{
public?ChangeColor()?{
this.setTitle("Change?Color");
this.setBounds(300,?200,?400,?300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.getContentPane().setBackground(Color.GREEN);
this.addMouseMotionListener(this);
}
public?void?mouseMoved(MouseEvent?e)?{
if?(e.getX()??(this.getWidth()?/?2))?{
this.getContentPane().setBackground(Color.RED);
}?else?{
this.getContentPane().setBackground(Color.BLUE);
}
}
public?void?mouseDragged(MouseEvent?e)?{
}
public?static?void?main(String[]?args)?{
new?ChangeColor();
}
}
**************************************************************
運行結(jié)果如下:
**************************************************************
本來是在drawcomponent這個里邊使用setBackground,你想啊drawcomponent是繼承JComponent的所以它是一個容器,所以它同樣有setBackground這個方法來設置它的背景顏色
但是因為你在設置它本身為一個畫布,因為你用了paintComponent(Graphics?g)
這個方法,所以setBackground這個方法即使你用了也看不到很大的效果。但是有一種取代的方法就是在paintComponent(Graphics?g)方法中首先就用Graphics?所含有的方法g.setColor(Color.black);來設置背景顏色再用g.fillRect(0,?0,?this.getWidth(),?this.getHeight());來填滿整個容器,這就達到了設置背景目的。然后你再g.setColor(其他顏色);來繪制其它圖形.
具體代碼:(在你以上的代碼上修改了點)
public?void?paintComponent(Graphics?g)
{
Graphics2D?g2=(Graphics2D)g;
g.setColor(Color.black);//這里設置背景顏色
g.fillRect(0,?0,?this.getWidth(),?this.getHeight());//這里填充背景顏色
double?x=100;
double?y=100;
double?w=200;
double?h=150;
Rectangle2D?rect=new?Rectangle2D.Double(x,y,w,h);
g2.setPaint(Color.white);//這里是你設置其他筆觸顏色
g2.draw(rect);
Ellipse2D?ellipse=new?Ellipse2D.Double();
ellipse.setFrame(rect);
g2.draw(ellipse);
Point2D?p1=new?Point2D.Double(x-40,y-30);
Point2D?p2=new?Point2D.Double(x+w+40,y+h+30);
g2.draw(new?Line2D.Double(p1,p2));
double?centerx=rect.getCenterX();
double?centery=rect.getCenterY();
double?radius=150;
Ellipse2D?circle=new?Ellipse2D.Double();
circle.setFrameFromCenter(centerx,centery,centerx+125,centery+125);
g2.draw(circle);
}
測試結(jié)果圖
分析題目:
一 分析布局: 題目明確的指出了按鈕的位置和大小 ,那么說明需要使用的布局是空布局(絕對布局) , 而JFrame窗口的內(nèi)容面板默認布局是邊界布局(BorderLayout),所以需要設置一下
setLayout(null);//設置為絕對布局
二了解顏色. Color 可以通過紅,綠,藍 三原色, 不同的搭配, 形成不同的顏色.
每個原色的取值范圍是0~255, 比如紅色的rgb值就是r=255,g=0,b=0
胡蘿卜色 r=237,g=145,b=33
三添加顏色 ,java給JFrame添加顏色,比較特殊. 必須添加到內(nèi)容面板上,才能正常顯示(因為JFrame分了好多層)
getContentPane().setBackground(new?Color(r,g,b));//設置窗口的面板背景色
四 事件處理分析: 點擊按鈕,會觸發(fā)ActionEvent 事件,這個事件會被ActionListener 接收器接收到, 只需要重寫ActionListener 里的actionPerformed 方法, 即可實現(xiàn)點擊按鈕后,做某件事
五 具體參考代碼
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
//?本類繼承JFrame,實現(xiàn)了ActionListener接口
public?class?MyFrame?extends?JFrame?implements?ActionListener{
int?r?=?90;
int?g?=?15;
int?b?=?195;
public?MyFrame()?{
//組件的初始化
JButton?jbRed?=?new?JButton("red");
jbRed.setLocation(20,?80);//按鈕位置
jbRed.setSize(80,?40);//按鈕大小
jbRed.addActionListener(this);//添加點擊按鈕后的事件響應?,因為本類實現(xiàn)了ActionListener接口,所以可以傳入?yún)?shù)this
JButton?jbGreen?=?new?JButton("green");
jbGreen.setLocation(120,?80);
jbGreen.setSize(80,?40);
jbGreen.addActionListener(this);
JButton?jbBlue?=?new?JButton("blue");
jbBlue.setLocation(220,?80);
jbBlue.setSize(80,?40);
jbBlue.addActionListener(this);
//添加組件到窗口
add(jbRed);
add(jbGreen);
add(jbBlue);
//窗口的設置
setLayout(null);//因為每一個按鈕都設置了位置和大小,?那么應該把窗口設置為空布局,?那么位置和大小才能有效
setTitle("窗口標題");
getContentPane().setBackground(new?Color(r,g,b));//設置窗口的面板背景色
setLocation(220,?160);//?窗口位置
setSize(320,?240);//?窗口大小
//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//點擊關(guān)閉按鈕時,結(jié)束程序
//下面也可以實現(xiàn),點擊關(guān)閉按鈕時,?結(jié)束程序
addWindowListener(new?WindowAdapter()?{
@Override
public?void?windowClosing(WindowEvent?e)?{//點擊關(guān)閉按鈕會觸發(fā)這個事件,調(diào)用這個方法
System.out.println("通過WindowListener實現(xiàn)關(guān)閉");
System.exit(0);//退出
}
});
}
public?void?actionPerformed(ActionEvent?e)?{
String?cmd=e.getActionCommand();
//通過ActionCommand?來判斷是哪一個按鈕被點擊了
if("red".equals(cmd))?{//如果是紅色按鈕被點擊了,那么紅色+10
r+=10;
if(r255)?{//如果red大于255?,可以設置為0?,也可以設置為255,一直鎖定為255?也可設置為初始的90,這里題目這里沒有要求
r=90;
}
}else?if("green".equals(cmd))?{
g+=10;
if(g255)?{
g=15;
}
}else?if("blue".equals(cmd)){
b+=10;
if(b255)?{
b=195;
}
}
this.getContentPane().setBackground(new?Color(r,g,b));
//System.out.println(this.getContentPane().getBackground());
}
public?static?void?main(String[]?args)?{
EventQueue.invokeLater(new?Runnable()?{
public?void?run()?{
new?MyFrame().setVisible(true);//啟動窗口并設置可見
}
});
}
}
按照你的要求,編寫的Java程序如下
import?java.awt.Color;
import?java.awt.Graphics;
import?javax.swing.JFrame;
public?class?F?extends?JFrame?implements?Runnable{
Color[]?colors?=?{Color.red,Color.orange,Color.yellow,Color.green,Color.cyan,Color.blue,Color.magenta,Color.black};??
int?i=0;
F(){
setTitle("變色正方形");
setSize(400,?400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
setVisible(true);
}
public?void?paint(Graphics?g){
g.setColor(colors[i]);
g.drawRect(100,100,200,200);
}
@Override
public?void?run()?{
while(true){
try?{
Thread.sleep(1000);
}?catch?(InterruptedException?e)?{
e.printStackTrace();
}
if(i7)
i++;
else
i=0;
repaint();
}
}
public?static?void?main(String[]?args)?{
F?f=new?F();
Thread?t=new?Thread(f);
t.start();
}
}
運行結(jié)果
分享題目:java改變顏色代碼 java中顏色
新聞來源:http://chinadenli.net/article0/doddsio.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設計公司、微信小程序、服務器托管、網(wǎng)站內(nèi)鏈、做網(wǎng)站、移動網(wǎng)站建設
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)