-1
좋아, 내 코드는 다음과 같은 말 :JLabel의 아이콘이 제대로 업데이트되지 않는 이유는 무엇입니까?
private void gameBoxActionPerformed(java.awt.event.ActionEvent evt) {
gameBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent evt) {
try {
if(gameBox.getSelectedItem().equals("file1"))
gameLabel.setIcon(new ImageIcon(ImageIO.read(new File("src/icons/file1.png"))));
if(gameBox.getSelectedItem().equals("file2"))
gameLabel.setIcon(new ImageIcon(ImageIO.read(new File("src/icons/file2.png"))));
if(gameBox.getSelectedItem().equals("file3"))
gameLabel.setIcon(new ImageIcon((ImageIO.read(new File("src/icons/file3.png")))));
if(gameBox.getSelectedItem().equals("file4"))
gameLabel.setIcon(new ImageIcon(ImageIO.read(new File("src/icons/file4.png"))));
if(gameBox.getSelectedItem().equals("file5"))
gameLabel.setIcon(new ImageIcon(ImageIO.read(new File("src/icons/file5.png"))));
if(gameBox.getSelectedItem().equals("file6"))
gameLabel.setIcon(new ImageIcon(ImageIO.read(new File("src/icons/file6.png"))));
} catch (IOException ex) {
Logger.getLogger(GUIMain.class.getName()).log(Level.SEVERE, null, ex);
}
}
});
}
그리고 gameLabel
의 시작 아이콘이 file1.png
하고 gameBox
에서 항목을 (콤보 상자 인) 변화에 따라 원하는 동작이 gameLabel
변화에 대한 imageIcon
입니다. 내가 가지고있는 문제는 두 개의 중에서 선택이 이루어질 때까지 변경되지 않습니다. gameBox
그 후에는 완벽하게 작동합니다. 첫 번째 변경시 변경되도록 설정하려면 어떻게해야합니까? 그리고 왜 그렇게하지 않았습니까?
배포 할 때 응용 프로그램 리소스가 포함 리소스가 될 것이므로 지금 당장 리소스를 액세스하는 것이 좋습니다. [tag : embedded-resource]는 파일이 아닌 URL로 액세스해야합니다. [info. URL을 구성하는 방법은 임베디드 리소스 페이지 (http://stackoverflow.com/tags/embedded-resource/info)를 참조하십시오. –
또한'Map'을 사용하여 이름을 연관시킵니다. –
trashgod
@trashgod 좋은 지적이지만,이 경우에는 액션 명령이 리소스의 이름과 정확히 일치하는 것처럼 보이기 때문에'String name = gameBox.getSelectedItem(); 물론 이미지가 시공되고 캐쉬되어야하기 때문에'Map' (또는)에 대한 당신의 제안은 다음과 같다 : url = this.getClass(). getResource ("/ icons/+ name); gameLabel.setIcon (.. 좀 더 구체적으로 말하자면 ** Map'**)를 저장/검색하는 것이 더 합리적입니다. –