gpt4 book ai didi

java - 如何交换两个物体的颜色

转载 作者:行者123 更新时间:2023-12-02 07:27:56 26 4
gpt4 key购买 nike

这是我的有问题的代码:

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 个“方 block ”的颜色?我认为我正走在实现这一目标的正确轨道上,但以前从未对颜色做过类似的事情。

最佳答案

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

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

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

编辑:

看来您需要为 color 的 Block 类添加 getter 和 setter,所以只需添加:

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

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

关于java - 如何交换两个物体的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13299735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com