-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;
}
}
「*這是Java問題的一個我的教授給我,我需要通過不使用其他佈局(如CardLayout)來完成這一點,我應該只使用空佈局。*」這是一個荒謬和沒有結果的任務。我會爲教授道歉。抱歉! – mre
您可以通過動態添加和刪除組件來實現此目的。查看[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