2013-03-06 5 views
4

나는 초보자입니다.자바에서 JFrame을 재설정하는 방법

public class ImageFrame extends JFrame { 
    private static final long serialVersionUID = 1L; 

    public static final int DEFAULT_WIDTH = 1365; 
    public static final int DEFAULT_HEIGHT = 730; 

    GettingImage getimg = new GettingImage(); 
    private BufferedImage image = getimg.getImage(); 

    final ImageProcessing operation = new ImageProcessing(image); 

    public ImageFrame(){ 
     setTitle("ImageTest"); 
     setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); 

     JMenu process = new JMenu("Process"); 

     JMenuItem greyscale = new JMenuItem("greyscale"); 
     process.add(greyscale); 

     //adding action listener to menu items 
     greyscale.addActionListener(
      new ActionListener(){ 
       public void actionPerformed(ActionEvent e) 
       { 
        image = operation.greyscale(); 
        System.out.println("greyscale is pressed"); 
       } 
      } 
     ); 

     JMenuBar bar = new JMenuBar(); 
     setJMenuBar(bar); 
     bar.add(process); 

     setSize(1365, 730); 
     setVisible(true); 

     ImageComponent component = new ImageComponent(image); 
     add(component); 
    } 
} 

을하지만 그레이 스케일 하위 메뉴를 누르면 이미지가 그레이 스케일로 변환되지 않습니다하지만 난 후 창을 최소화 및 최대화 할 때 이미지가 그레이 스케일로 변경되어 다음과 같이 나는 IMAGEFRAME 클래스가 있습니다. 윈도우가 새로 고쳐지지 않아서라고 생각합니다. 어떻게 새로 고침합니까?

+0

'ImageProcessing' 클래스를 보지 않고는 말할 수 없습니다. 현재'JFrame '에 대해'repaint()'를 호출해야 할 수도 있습니다. – Reimeus

답변

4

조치 수신기의 ImageComponent에있는 repaint으로 전화하십시오.

1

때를 창을 최소화하고 극대화 이후

0

음 액션 리스너의 끝에서() 다시 칠 호출하려고하면 .dispose를()는 창을 닫거나 당신이 당신의 자신의 재시작 방법을 쓸 수 있습니다 시도해 볼 수도 있습니다 변수를 시작 값으로 설정합니다.

+1

예. 베를린에서 베를린까지 세계 곳곳으로 여행 할 수 있습니다 :-) 다른 말로하면 : 그것은 실행 가능한 해결책이 아닙니다. – kleopatra