关于让我的程序运行,我有点问题。我创建了一个具有设置的hashmap,并且hashmap可以容纳4个键/值对。
现在每个键(0,1,2,3)都附加到一个表示颜色的字符串'value'(“white”,“red”......等)。
现在我使用随机给我一个从0到3的随机数,我将其分配给一个int变量。
然后我使用这个变量来查看集合是否包含这个int键(它会)然后我想将与该键相关的值分配给一个String变量,然后我将在一个方法中使用它来更改GUI面板的颜色(触发事件时生成随机颜色)。
// changing yellow with the String variable representing the value
// from the hashmap found by matching the key with the random int.
centerPanel.setBackground(Color.yellow);
有人可以帮帮我吗?现在已经快到12点了,早上可能已经知道了,但我有心灵空白!!
答案 0 :(得分:4)
在我看来,这是一个从0到3索引的数组Color [4] - 而不是将random int更改为String或Integer键并进行哈希查找。
完全虚假的类,显示如何使用随机
的数组public class foo
{
private Color[] colors = { Color.red, Color.green, Color.blue, Color.yellow };
public Color getColor()
{
return colors[getRandom(0, 3)];
}
private int getRandom(int min, int max)
{
return 2;
}
enum Color {
red, green, blue, yellow;
}
}
答案 1 :(得分:3)
改为使用数组:
String[] colors = new String[]{"white", "red"... etc};
int random = random.nextInt(colors.length);
String randomColor = colors[random];
编辑:如果需要,替换Color类(或基元)的String。
答案 2 :(得分:2)
您需要一种将String转换为实际颜色的方法。我会用这样的东西:
public static Color stringToColor(final String value) {
if (value == null) {
return Color.black;
}
try {
// get color by hex or octal value
return Color.decode(value);
} catch (NumberFormatException nfe) {
// if we can't decode lets try to get it by name
try {
// try to get a color by name using reflection
final Field f = Color.class.getField(value);
return (Color) f.get(null);
} catch (Exception ce) {
// if we can't get any color return black
return Color.black;
}
}
}
(来自2D-Graphics / Convertsagivenstringintoacolor.htm“> http://www.java2s.com/Tutorial/Java/0261_2D-Graphics/Convertsagivenstringintoacolor.htm)
答案 3 :(得分:0)
对于任何对我如何解决这个问题感兴趣的人(感谢其他人的帮助和谷歌的教程):
// fields
private Color1[] colors = { Color1.red, Color1.green, Color1.blue, Color1.yellow };
private int a2;
private String getRandomColor;
//constructor calling methods to generate a random value to 'a2' (0 to 3) and then setting variable a2 to the color as a string
public SamTester()
{
setA2();
}
public void setA2()
{
a2 = (int)(Math.random()*4);
getRandomColor = getColor().toString();
}
public Color1 getColor()
{
return colors[a2];
}
________________________________________________________________________
//inner class
class LeftClicked implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
if(getRandomColor == "red")
{
centerPanel.setBackground(Color.red);
}
else if (getRandomColor == "blue")
{
centerPanel.setBackground(Color.blue);
}
else if (getRandomColor == "green")
{
centerPanel.setBackground(Color.green);
}
else
{
centerPanel.setBackground(Color.yellow);
}
setA2();
}
}
________________________________________________________________________
//basic enums class to represent the constant colors.
public enum Color1
{
red, green, blue, yellow;
}
干杯!