2013-12-13 20 views
0

我目前正在編寫一個接口,其中有一個JFrame類和兩個JPanel類。當腳本第一次執行時,會顯示面板A.我在面板A中有一個JButton,我希望在單擊時顯示面板B而不是面板A.擺動卡布局更改面板顯示在用戶的行動

有沒有什麼辦法可以做到這一點?

+0

看看[這個問題和答案】(http://stackoverflow.com/a/20483818/2587435)。應該給你一些想法。 –

+0

*「謝謝 達里奧」*噪音,離開它。 –

回答

5

閱讀tutorial

您可以使用CardLayoutnext()方法用於顯示忘詞,

,或者您可以使用show(...);用於顯示特定的卡。

簡單的例子:

import java.awt.BorderLayout; 
import java.awt.CardLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 

public class Example { 

    public static void main(String[] args){ 
     JFrame frame = new JFrame(); 

     final JPanel panel = new JPanel(new CardLayout()); 

     JLabel l1 = new JLabel("1"); 
     JLabel l2 = new JLabel("2"); 
     JLabel l3 = new JLabel("3"); 

     panel.add(l1,"l1"); 
     panel.add(l2,"l2"); 
     panel.add(l3,"l3"); 

     JButton btn = new JButton("next"); 
     btn.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent arg0) { 
       CardLayout layout = (CardLayout) panel.getLayout(); 
       layout.next(panel); 
      } 
     }); 

     JButton btnSpec = new JButton("l3"); 
     btnSpec.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent arg0) { 
       CardLayout layout = (CardLayout) panel.getLayout(); 
       layout.show(panel, "l3"); 
      } 
     }); 

     frame.add(panel); 
     frame.add(btn,BorderLayout.SOUTH); 
     frame.add(btnSpec,BorderLayout.NORTH); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 

}