首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何交换两个对象的颜色

如何交换两个对象的颜色
EN

Stack Overflow用户
提问于 2012-11-09 07:30:38
回答 3查看 940关注 0票数 0

下面是我正在讨论的代码:

代码语言:javascript
运行
复制
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()方法交换其中两个“正方形”的颜色?我在想,我正在实现它的正确轨道上,但以前没有做过这样的颜色。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-09 07:32:00

您将需要使用setColor(),但在此之前,您需要创建一种颜色的临时。

代码语言:javascript
运行
复制
public void swapColors(Block g1, Block g2) {
    Color c = g1.getColor();
    g1.setColor(g2.getColor());
    g2.setColor(c);
    repaint();
}

同样使用此方法头,您可以交换Block对象中的两种颜色,而不需要为每个组合使用不同的方法,只需传递要交换的两种颜色作为参数即可。

编辑:

似乎您需要为color的Block类添加一个getter和setter,所以只需添加:

代码语言:javascript
运行
复制
public Color getColor() {
    return this.color; 
}

public void setColor(Color c) {
    this.color = c;
}
票数 1
EN

Stack Overflow用户

发布于 2012-11-09 07:33:43

代码语言:javascript
运行
复制
public void swapTopRowColors()
{
    Color temp = topLeft.getColor(topRight);
    topLeft.setColor(topRight.getColor()); //<-- line you're missing
    topRight.setColor(temp);
    repaint();
}

注释===后面的===

您需要在Block类中添加getter和setter:

代码语言:javascript
运行
复制
public Color getColor() {
    return color;
}

public void setColor(Color color) {
    this.color = color;
}
票数 1
EN

Stack Overflow用户

发布于 2012-11-09 07:43:28

在默认的构造函数调用中,你有两个几乎相同的构造函数Board()和Board(h,w),su:

代码语言:javascript
运行
复制
public Board()  //constructor
{
    Board(200,200);
}

如果使用此方法,将来将只需要编辑一个构造函数,而不是同时编辑两个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13299735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档