分析題目:
建網(wǎng)站原本是網(wǎng)站策劃師、網(wǎng)絡(luò)程序員、網(wǎng)頁設(shè)計(jì)師等,應(yīng)用各種網(wǎng)絡(luò)程序開發(fā)技術(shù)和網(wǎng)頁設(shè)計(jì)技術(shù)配合操作的協(xié)同工作。成都創(chuàng)新互聯(lián)專業(yè)提供網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站,網(wǎng)頁設(shè)計(jì),網(wǎng)站制作(企業(yè)站、響應(yīng)式網(wǎng)站、電商門戶網(wǎng)站)等服務(wù),從網(wǎng)站深度策劃、搜索引擎友好度優(yōu)化到用戶體驗(yàn)的提升,我們力求做到極致!
一 分析布局: 題目明確的指出了按鈕的位置和大小 ,那么說明需要使用的布局是空布局(絕對(duì)布局) , 而JFrame窗口的內(nèi)容面板默認(rèn)布局是邊界布局(BorderLayout),所以需要設(shè)置一下
setLayout(null);//設(shè)置為絕對(duì)布局
二了解顏色. Color 可以通過紅,綠,藍(lán) 三原色, 不同的搭配, 形成不同的顏色.
每個(gè)原色的取值范圍是0~255, 比如紅色的rgb值就是r=255,g=0,b=0
胡蘿卜色 r=237,g=145,b=33
三添加顏色 ,java給JFrame添加顏色,比較特殊. 必須添加到內(nèi)容面板上,才能正常顯示(因?yàn)镴Frame分了好多層)
getContentPane().setBackground(new?Color(r,g,b));//設(shè)置窗口的面板背景色
四 事件處理分析: 點(diǎn)擊按鈕,會(huì)觸發(fā)ActionEvent 事件,這個(gè)事件會(huì)被ActionListener 接收器接收到, 只需要重寫ActionListener 里的actionPerformed 方法, 即可實(shí)現(xiàn)點(diǎn)擊按鈕后,做某件事
五 具體參考代碼
import?java.awt.*;
import?java.awt.event.*;
import?javax.swing.*;
//?本類繼承JFrame,實(shí)現(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);//添加點(diǎn)擊按鈕后的事件響應(yīng)?,因?yàn)楸绢悓?shí)現(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);
//窗口的設(shè)置
setLayout(null);//因?yàn)槊恳粋€(gè)按鈕都設(shè)置了位置和大小,?那么應(yīng)該把窗口設(shè)置為空布局,?那么位置和大小才能有效
setTitle("窗口標(biāo)題");
getContentPane().setBackground(new?Color(r,g,b));//設(shè)置窗口的面板背景色
setLocation(220,?160);//?窗口位置
setSize(320,?240);//?窗口大小
//setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//點(diǎn)擊關(guān)閉按鈕時(shí),結(jié)束程序
//下面也可以實(shí)現(xiàn),點(diǎn)擊關(guān)閉按鈕時(shí),?結(jié)束程序
addWindowListener(new?WindowAdapter()?{
@Override
public?void?windowClosing(WindowEvent?e)?{//點(diǎn)擊關(guān)閉按鈕會(huì)觸發(fā)這個(gè)事件,調(diào)用這個(gè)方法
System.out.println("通過WindowListener實(shí)現(xiàn)關(guān)閉");
System.exit(0);//退出
}
});
}
public?void?actionPerformed(ActionEvent?e)?{
String?cmd=e.getActionCommand();
//通過ActionCommand?來判斷是哪一個(gè)按鈕被點(diǎn)擊了
if("red".equals(cmd))?{//如果是紅色按鈕被點(diǎn)擊了,那么紅色+10
r+=10;
if(r255)?{//如果red大于255?,可以設(shè)置為0?,也可以設(shè)置為255,一直鎖定為255?也可設(shè)置為初始的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);//啟動(dòng)窗口并設(shè)置可見
}
});
}
}
為yellow、blue、red3個(gè)按鈕添加actionlistener,當(dāng)按鈕點(diǎn)擊時(shí)執(zhí)行setBackground(backgroundColor),同時(shí)執(zhí)行 按鈕.setBackground(backgroundColor)即可,比如:
JButton btnYellow = null;
JButton btnBlue = null;
JButton btnRed = null;
btnYellow.setActionCommand("yellow");
btnBlue.setActionCommand("blue");
btnRed.setActionCommand("red");
public void actionPerformed(ActionEvent e) {
String command = event.getActionCommand();
if( "yellow".equals(command) ){
setBackground(Color.yellow);
btnYellow.setBackground(Color.yellow);
}else if( "blue".equals(command) ){
setBackground(Color.blue);
btnBlue.setBackground(Color.blue);
}else if( "red".equals(command) ){
setBackground(Color.red);
btnRed.setBackground(Color.red);
}
}
寫出了部分代碼
setForeground() 設(shè)置前景/字體顏色
setBackground() 設(shè)置背景顏色
具體實(shí)現(xiàn):(假設(shè)按鈕名稱為:button)
設(shè)置紅字:
button.setForeground(Color.red);
設(shè)置黑色背影:
button.setBackground(Color.black);