2012-11-03 6 views
2

안녕하세요스윙 변화 JScrollPane의 내용

scrollPanel = new JScrollPane(new Welcome().display()); 

     for(final JMenuItem i : items) { 
      i.addActionListener(new ActionListener() { 
       public void actionPerformed(ActionEvent e) { 
        String txt = i.getText(); 

        if(txt.equals("Open")) { 
         scrollPanel = new JScrollPane(new Open().display()); 
        } else if(txt.equals("Save")) { 
         scrollPanel = new JScrollPane(new Save().display()); 
        } else if(txt.equals("Save as")) { 
         scrollPanel = new JScrollPane(new SaveAs().display()); 
        } else if(txt.equals("Close")) { 
         new Close().ask(); 
         scrollPanel = new JScrollPane(); 
        } 

        scrollPanel.revalidate(); 
        scrollPanel.repaint(); 
       } 
      }); 
     } 

     scrollPanel.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); 
     scrollPanel.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); 

     menuBar.add(menu); 
     frame.setJMenuBar(menuBar); 
     frame.add(scrollPanel); 

     frame.pack(); 
     frame.setSize(640, 480); 
     frame.setVisible(true); 
     frame.setDefaultCloseOperation(frame.EXIT_ON_CLOSE); 

하지만 그 작동하지 않는 등의 JScrollPane 내용을 변경하려합니다. 각 클래스 열기, 저장, 다른 이름으로 저장 JPaneJLabel이 (가) 있습니다. Ex.

public class Open { 
    public JPanel display() { 
     JPanel panel = new JPanel(); 
     panel.add(new JLabel("Open")); 
     return panel; 
    } 
} 

답변

3

스크롤 팬의 콘텐츠는 변경되지 않습니다. 새로운 JScrollPane 인스턴스를 scrollPanel 필드에 할당합니다. 프레임에 추가하고 표시되는 스크롤 창은 그대로 유지됩니다. 당신이 스크롤 창 내용을 변경하려는 경우, 당신은 사용해야

scrollPanel.setViewportView(new Open().display());