2014-04-03 106 views
-1

如何在框架中使用ScrollPanes切換面板?我嘗試了很多可能的方法,但無法提出解決方案。

其實這是我的教授給我的Java問題之一,我需要通過不使用其他佈局(如CardLayout)來完成此操作,並且我應該只使用空佈局。只要我維護這三個類和滾動窗格,就可以使用其他類。

在沒有CardLayout的情況下在JFrame中切換JPanel

public class MainDriver { 

public static void main(String[] args) { 

    JFrame frame = new JFrame("Frame"); 
    panel1 p1 = new panel1(); 
    panel2 p2 = new panel2(); 

    JScrollPane jsp = new JScrollPane(panel1.panel); 
    Container c = frame.getContentPane(); 
    jsp.getVerticalScrollBar().setUnitIncrement(10); 
    c.add(jsp); 

    //codes for panel switching from panel1 to panel2 vice versa 


    frame.setDefaultCloseOperation(JFrame.exit_ON_CLOSE); 
    frame.setSize(1058, 600); 
    frame.setLocation(100, 50); 
    frame.setVisible(true); 

} 
} 

--------------------------------------------- 

public class panel1{ 
    public JPanel panel(){ 
     JPanel fore = new JPanel(); 
     fore.setLayout(null); 
     fore.setPreferredSize(new Dimension (1024, 600)); 
     fore.setBackground(Color.decode("#004050")); 
     fore.setVisible(true); 

     JButton but = new JButton(); 
     but.setLocation(425, 300); 
     but.setSize(100, 35); 
     //button action/mouse listener 
     fore.add(but); 

     return fore; 
    } 
} 

--------------------------------------------- 

public class panel2{ 
    public JPanel panel(){ 
     JPanel fore = new JPanel(); 
     fore.setLayout(null); 
     fore.setPreferredSize(new Dimension (1024, 600)); 
     fore.setBackground(Color.decode("#004050")); 
     fore.setVisible(true); 

     JButton but = new JButton(); 
     but.setLocation(425, 300); 
     but.setSize(100, 35); 
     //button action/mouse listener 
     fore.add(but); 

     return fore; 
    } 
} 
+2

「*這是Java問題的一個我的教授給我,我需要通過不使用其他佈局(如CardLayout)來完成這一點,我應該只使用空佈局。*」這是一個荒謬和沒有結果的任務。我會爲教授道歉。抱歉! – mre

+2

您可以通過動態添加和刪除組件來實現此目的。查看[removeAll](http://docs.oracle.com/javase/7/docs/api/java/awt/Container.html#removeAll())。這表示使用null佈局是不好的,甚至作爲一個學習練習。此外,你甚至錯過了甚至[Swing的Hello World](http://docs.oracle.com/javase/tutorial/uiswing/examples/start/HelloWorldSwingProject/src/start/HelloWorldSwing.java)所做的事情:調用'invokeLater'你的主。 – DSquare

回答

2

如何切換面板在一個框架ScrollPanes?

scrollPane.setViewportView(anotherPanel); 
相關問題