2014-03-07 2 views
0

2d 배열의 단추가 있고 일련의 이미지가 있습니다. 단추에 이미지를 표시하고 싶지만 프로그램을 시작할 때마다 이미지가 임의의 단추에 있도록하고 싶습니다. 이처럼 : What I want it to look like. 지금은 새로운 JButton을 만들 때 아이콘의 값을 변경하여 모든 버튼에 하나의 색상 만 표시 할 수 있습니다. 내가 뭘해야한다고 생각 Math.Random() 변수로 설정하고 이미지의 배열에서 임의의 값을 얻으려면 icons[] 때 내가 새 JButton을 선언하지만 이것이 옳고 돈이 있는지 모르겠 변수를 넣어 그것을하는 방법을 모른다. 좀 검색을했고, 이것을 사용하여 시도 :Java GUI - 배열에서 무작위 값 얻기

var randomValue = icons[Math.floor(Math.random() * icons.length)]; 

하지만 난

possible loss of precision, required int, found double. 

도움말을 말하는 오류 주시면 감사하겠습니다을 얻을. 내가 전체 코드를 올리길 원한다면 알려주세요.

// 2D Array of buttons 
buttons = new JButton[8][8]; 
    for(int row=0; row<8; row++) 
    { 
     for (int col=0; col<8; col++) 
     { 
      buttons[row][col] = new JButton(icons[0]); 
      buttons[row][col].setLocation(6+col*70, 6+row*70); 
      buttons[row][col].setSize(69,69); 

      getContentPane().add(buttons[row][col]); 
     } 
    } 

// Array of images 
public static ImageIcon[] icons = {new ImageIcon("RedButton.png"), 
            new ImageIcon("OrangeButton.png"), 
            new ImageIcon("YellowButton.png"), 
            new ImageIcon("GreenButton.png"), 
            new ImageIcon("BlueButton.png"), 
            new ImageIcon("LightGrayButton.png"), 
            new ImageIcon("DarkGrayButton.png")}; 
+1

'randomValue = icons [(int) (Math.random() * icons.length))]' – exception1

답변

1

나는 ArrayList에있는 모든 내 ImageIcons 퍼팅의 ArrayList에 java.util.Collections.shuffle(...)를 호출 한 다음 순서로 셔플의 ArrayList에서 ImageIcons을 전달하여 크게이 단순화 것입니다. 또는 단추가 반복되는 아이콘을 허용하는 경우 java.util.Random 변수 (예 : random)를 사용하고 random.nextInt(icons.length)을 호출하여 내 배열의 임의 색인을 가져옵니다.

별도로, 널 레이아웃과 절대 위치 지정을 사용하지 마십시오. JButton의 그리드가 JPanel을 사용하여 GridLayout에 보유되도록 요청합니다. 구걸.


제쳐두고, 같은 프로젝트에서 다른 이름을 사용하여 질문을 게시하는 이유는 무엇입니까? 당신은 여기에 다른 게시물 모두 비슷한 게시물 있지만 다른 사용자 이름을했습니다 :

+0

arraylist를 사용하지 않는 이유는이 프로그램이 동등하기 때문입니다 우리는 이런 식으로해야합니다. 또한 null 레이아웃을 사용하라고했습니다. 그게 실제로 내 게시물 btw되지 않습니다, 나는 다른 사람이 과제에 너무 어려움을 겪고있는 것 같아요. 이것은 실제로이 사이트를 처음 사용하는 날이며 방금 계정을 만들었습니다. 팁을 가져 주셔서 감사합니다! – user3390522

0

당신이하는 JButton의 아이콘이 셔플 기능을 사용 설정하기 전에 ...

public ImageIcon[] shuffle(ImageIcon[] icons) 
{ 
    int index = 0; 
    ImageIcon temp = 0; 

    for(int i = icons.length -1; i > 0; i--) 
    { 
     index = r.nextInt(i + 1); 
     temp = icons[index]; 
     icons[index] = icons[i]; 
     icons[i] = temp; 
    } 
    return icons; 
}