2014-01-15 58 views
0

我真的沒有現在如何形成的問題,我有一個gridlayout與4個按鈕。當用戶按下添加模塊時,我想在按鈕下方顯示一個窗體而不是新窗口(如果可能的話)。Gridlayout按鈕點擊然後加載按鈕下的一個表格Java

frame = new JFrame("ModuleViewer"); 
    makeMenu(frame); 

    Container contentPane = frame.getContentPane(); 

    // Specify the layout manager with nice spacing 
    contentPane.setLayout(new GridLayout(0, 2)); 

    addModule = new JButton("Toevoegen Module"); 
    contentPane.add(addModule); 

    overview = new JButton("Overzicht Modules"); 
    contentPane.add(overview); 

    addSchoolweeks = new JButton("Aapassen schoolweken"); 
    contentPane.add(addSchoolweeks); 

    weekheavy = new JButton("Weekbelasting"); 
    contentPane.add(weekheavy); 

    frame.pack(); 

    Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); 
    frame.setLocation(d.width/2 - frame.getWidth()/2, d.height/2 - frame.getHeight()/2); 
    frame.setVisible(true); 

我知道我首先需要爲按鈕添加een動作方法,我知道如何做到這一點並不重要。我只想知道如何在按鈕下創建一個佈局,因此當用戶單擊佈局時將被繪製。

+1

有一個看看[CardLayout教程](http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html) – splungebob

+0

我可以用結合在GridView教程cardlayout教程? – Julien

+0

請參閱我的回答以下關於使用多個佈局。 – splungebob

回答

3

每個面板只能有一個佈局,但您可以使用多個面板達到所需的效果:頂部面板使用GridLayout來放置按鈕,底部面板使用CardLayout來放置多個其他面板,每個按鈕單擊一個。根據其內容,這些面板中的每一個都可以使用任何佈局。

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class CardLayoutDemo implements Runnable 
{ 
    final static String CARD1 = "Red"; 
    final static String CARD2 = "Green"; 
    final static String CARD3 = "Blue"; 

    JPanel cards; 
    CardLayout cardLayout; 

    public static void main(String[] args) 
    { 
    SwingUtilities.invokeLater(new CardLayoutDemo()); 
    } 

    public void run() 
    { 
    JButton btnRed = createButton("Red"); 
    JButton btnGreen = createButton("Green"); 
    JButton btnBlue = createButton("Blue"); 

    JPanel buttons = new JPanel(new GridLayout(1,3)); 
    buttons.add(btnRed); 
    buttons.add(btnGreen); 
    buttons.add(btnBlue); 

    JPanel card1 = new JPanel(); 
    card1.setBackground(Color.RED); 

    JPanel card2 = new JPanel(); 
    card2.setBackground(Color.GREEN); 

    JPanel card3 = new JPanel(); 
    card3.setBackground(Color.BLUE); 

    cardLayout = new CardLayout(); 
    cards = new JPanel(cardLayout); 
    cards.add(card1, CARD1); 
    cards.add(card2, CARD2); 
    cards.add(card3, CARD3); 

    JFrame f = new JFrame("CardLayout Demo"); 
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    f.add(buttons, BorderLayout.NORTH); 
    f.add(cards, BorderLayout.CENTER); 
    f.setSize(300, 200); 
    f.setLocationRelativeTo(null); 
    f.setVisible(true); 
    } 

    private JButton createButton(final String name) 
    { 
    JButton button = new JButton(name); 
    button.addActionListener(new ActionListener() 
    { 
     @Override 
     public void actionPerformed(ActionEvent e) 
     { 
     cardLayout.show(cards, name); 
     } 
    }); 

    return button; 
    } 
} 
+0

我投了一個很棒的答案,這真的是我想要的! – Julien

+0

我不明白這個actionPerformed是如何工作的。我知道這是調用時,我點擊一個按鈕。但我怎麼能每個按鈕的動作通常我做這個類nieuwListener實現ActionListener { public void actionPerformed(ActionEvent event) { moduleNaamLabel = new JLabel(「Naam Module:」); addModule.add(moduleNaamLabel); System.out.println(「Help」); } } – Julien

相關問題