2012-11-03 32 views
2

嗨,我試圖改變JScrollPane內容,如搖擺變化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); 

但它不工作。 每個班級打開,保存,另存爲JPaneJLabel裏面。例如,

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

回答

3

您沒有更改滾動窗格內容。您正在爲scrollPanel字段分配新的JScrollPane實例。您添加到框架並顯示的滾動窗格保持原樣。

如果要更改滾動窗格中的內容,你應該使用

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