2012-11-08 57 views
0

的顏色這裏是我的代碼有問題:如何交換2個對象

import java.awt.Color; 
import java.awt.Graphics; 
import javax.swing.JPanel; 

import sun.java2d.loops.DrawRect; 

import java.awt.event.MouseListener; 
import java.awt.event.MouseEvent; 

public class Board extends JPanel implements MouseListener 
{ 
//instance variables 
private int width; 
private int height; 
private Block topLeft; 
private Block topRight; 
private Block botLeft; 
private Block botRight; 

public Board() //constructor 
{ 
    width = 200; 
    height = 200; 
    topLeft=new Block(0,0,width/2-10,height/2-10,Color.RED); 
    topRight=new Block(width/2,0,width/2-10,height/2-10,Color.GREEN); 
    botLeft=new Block(0,height/2,width/2-10,height/2-10,Color.BLUE); 
    botRight=new Block(width/2,height/2,width/2-10,height/2-10,Color.YELLOW); 
    setBackground(Color.WHITE); 
    setVisible(true); 
    //start trapping for mouse clicks 
    addMouseListener(this); 
} 

//initialization constructor 
public Board(int w, int h) //constructor 
{ 
    width = w; 
    height = h; 
    topLeft=new Block(0,0,width/2-10,height/2-10,Color.RED); 
    topRight=new Block(width/2,0,width/2-10,height/2-10,Color.GREEN); 
    botLeft=new Block(0,height/2,width/2-10,height/2-10,Color.BLUE); 
    botRight=new Block(width/2,height/2,width/2-10,height/2-10,Color.YELLOW); 
    setBackground(Color.WHITE); 
    setVisible(true); 
    //start trapping for mouse clicks 
    addMouseListener(this); 
} 



public void update(Graphics window) 
{ 
    paint(window); 
} 

public void paintComponent(Graphics window) 
{ 
super.paintComponent(window); 
topRight.draw(window); 
topLeft.draw(window); 
botRight.draw(window); 
botLeft.draw(window); 


} 

public void swapTopRowColors() 
{ 
Color temp = topLeft.getColor(topRight); 
topRight.setColor(temp); 
repaint(); 
} 

public void swapBottomRowColors() 
{ 



} 

public void swapLeftColumnColors() 
{ 



} 

public void swapRightColumnColors() 
{ 



} 

我怎麼會掉這些「方塊」使用.getColor()方法2的顏色?我認爲我正在實現它的正確軌道,但沒有必須像以前那樣用顏色做這樣的事情。

回答

1

您將需要使用setColor(),但在此之前,您需要創建其中一種顏色的溫度。

public void swapColors(Block g1, Block g2) { 
    Color c = g1.getColor(); 
    g1.setColor(g2.getColor()); 
    g2.setColor(c); 
    repaint(); 
} 

也是用這個方法的標題,你可以交換從Block對象兩種顏色,而不需要不同的方法,每一種組合,只要通過要交換作爲參數兩種。

編輯:

看來你需要一個getter和setter添加爲color你的格擋類,所以只需添加:

public Color getColor() { 
    return this.color; 
} 

public void setColor(Color c) { 
    this.color = c; 
} 
+0

我不斷得到的錯誤是聲稱我需要getColor在我的Block類中,但這不應該是必要的,對嗎? –

+0

所以也許像'私人色溫= 0,0,0;'? –

+0

你的'Block'類是什麼樣的? – siame

1
public void swapTopRowColors() 
{ 
    Color temp = topLeft.getColor(topRight); 
    topLeft.setColor(topRight.getColor()); //<-- line you're missing 
    topRight.setColor(temp); 
    repaint(); 
} 

===以下注釋===

您需要在您的Block課程中添加吸氣劑和吸氣劑:

public Color getColor() { 
    return color; 
} 

public void setColor(Color color) { 
    this.color = color; 
} 
+0

我得到這個'說明\t資源\t路徑\t位置\t類型 方法的getColor()是未定義的類型塊\t板.java \t/Lab10_boolean/10f \t line 75 \t Java問題當我使用你的解決方案時(它對我最有意義) –

+0

你的'Block'類似乎沒有'getColor()' –

+0

的方法,我只是沒有編輯我的OP –

0

你有2個幾乎張玉峯構造局()和董事會(H,W),蘇中默認的構造函數調用:

public Board() //constructor 
{ 
    Board(200,200); 
} 

如果您使用此方法,在未來你將只需要編輯一個構造函數, 不是都。

+0

謝謝,我的方式是由於我瞭解它的方式 –