2014-07-12 4 views
1

프레임으로 두 개의 버튼을 만들었습니다. 다른 버튼을 클릭하면 다른 이미지를 표시하는 방법을 알고 싶습니다. 가 밖으로 또 다른 방법입니다 아니면 내가 패널을해야? 나는 초급 단계프레임에서 버튼을 클릭하여 이미지를 페인트하는 방법은 무엇입니까?

package prac; 
import java.awt.*; 
import java.awt.event.*; 

public class b extends Frame implements ActionListener{ 
String msg; 
Button one,two; 

b() 
{ setSize(1000,500); 
    setVisible(true); 
    setLayout(new FlowLayout(FlowLayout.LEFT)); 
    one=new Button("1"); 
    two=new Button("2"); 

    add(one); 
    add(two); 

    one.addActionListener(this); 
    two.addActionListener(this); 

} 
public void actionPerformed(ActionEvent e) 
{ 
    msg=e.getActionCommand(); 
    if(msg.equals("1")) 
    { 
     msg="Pressed 1"; 
    } 
    else 
     msg="pressed 2"; 
repaint();  
} 

public void paint(Graphics g) 
{ 
    g.drawString(msg,100,300); 
} 
public static void main(String s[]) 
{ 
    new b(); 
} 
} 
+0

당신을 위해 도움이 해답입니다. – Braj

답변

0

사용 JLabel에서 오전 버튼을 클릭하면 아이콘을 변경할 수 있습니다.

몇 가지 포인트 : 모든 구성 요소를 추가 한 후 결국

  • 전화 setVisible(true).
  • JFrame#setSize() 메서드를 호출하는 대신 구성 요소의 기본 크기를 기준으로 JFrame에 해당 구성 요소를 자동으로 맞추는 메서드를 사용하십시오.

샘플 코드 :

final JLabel jlabel = new JLabel(); 
add(jlabel); 

final Image image1 = ImageIO.read(new File("resources/1.png")); 
final Image image2 = ImageIO.read(new File("resources/2.png")); 

JPanel panel = new JPanel(); 
JButton jbutton1 = new JButton("Show first image"); 
jbutton1.addActionListener(new ActionListener() { 

    @Override 
    public void actionPerformed(ActionEvent arg0) { 
     jlabel.setIcon(new ImageIcon(image1)); 
    } 
}); 

JButton jbutton2 = new JButton("Show second image"); 
jbutton2.addActionListener(new ActionListener() { 

    @Override 
    public void actionPerformed(ActionEvent arg0) { 
     jlabel.setIcon(new ImageIcon(image2)); 
    } 
}); 

panel.add(jbutton1); 
panel.add(jbutton2); 
add(panel, BorderLayout.NORTH); 
+0

이 대답은 어떻습니까? 문제가 해결 되었습니까? – Braj

관련 문제