2010-08-21 3 views
1

레이블이 달린 프로그램을 가지고 있지만 이미지를 사용할 수 없습니다. 나는 초급자이고 이것은 모두 내가 지금까지 생각 해낼 수있는 것이다. 그것은 실행하지만이 코드에 이미지를 구현 이해가 안 돼요.카드 레이아웃으로 이미지 뷰어를 만드시겠습니까?

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class CardLayoutExample extends JFrame implements KeyListener 

{ 

private Container pane = getContentPane(); 
private CardLayout layout = new CardLayout(); 

public CardLayoutExample() 
{ 
    pane.setLayout(layout); 

    pane.add(new JLabel("hey", SwingConstants.CENTER), "hey"); 
    pane.add(new JLabel("what", SwingConstants.CENTER), "what"); 
    pane.add(new JLabel("is", SwingConstants.CENTER), "is"); 
    pane.add(new JLabel("your", SwingConstants.CENTER), "your"); 
    pane.add(new JLabel("first", SwingConstants.CENTER), "first"); 
    pane.add(new JLabel("name", SwingConstants.CENTER), "name"); 

    addKeyListener(this); 

    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    setTitle("CardLayout Example"); 
    setSize(410,310); 
    setVisible(true); 

} 

public void keyTyped(KeyEvent event) 
{ 
    layout.next(pane); 
} 

public void keyPressed(KeyEvent event){} 
public void keyReleased(KeyEvent event){} 

public static void main(String args[]) 
{ 
    CardLayoutExample top = new CardLayoutExample(); 
} 
} 

답변

1

이미지를 JLabel로 설정하려면 생성자의 Icon 객체를 전달하거나 클래스에서 setIcon 메서드를 호출하십시오.


 
Icon icon1 = new ImageIcon("path to image filename"); 
JLabel label1 = new JLabel("message 1", icon1, SwingConstants.CENTER); 
pane.add(label1, "*You need a static final string here - see below*"); 
 
참고로, 당신은 제대로 CardLayout에 항목을 추가하지 않습니다. 창을 전환 할 때 시스템은 창 식별자로 전달한 문자열에서 "=="(.equals가 아님)을 수행합니다. 시험 중에 곧이 문제가 나타납니다. 이 문제를 해결하는 가장 쉬운 방법은 각 창을 나타내는 정적 최종 문자열을 만들어 식별자로 사용하는 것입니다.

관련 문제