2010-08-15 162 views
0

我正在netbeans中創建一個桌面應用程序,我希望在我的菜單欄中,如果我選擇一個新的菜單項,而不是隻有下面的面板更改不完整frame.so它會看起來像即時通訊工作任何人都可以幫我解決問題java桌面應用程序

+0

你能解釋一下?我很難理解「下面板」和「全幀」的含義。 – 2010-08-15 06:12:09

回答

2

你可以用Card Layout Managers來實現這樣的功能。

下面是完整的例子:

import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.*; 

class JMenuExample extends JFrame implements ActionListener { 

    JMenu menu; 
    JPanel panelMain; 
    JPanel panelRed; 
    JPanel panelBlue; 

    CardLayout layout; 

    public void createUI() { 
     createMenu(); 
     createPanels(); 

    } 

    private void createPanels() { 
     panelMain = new JPanel(); 
     layout = new CardLayout(); 
     panelMain.setLayout(layout); 

     panelRed = new JPanel(); 
     panelRed.setBackground(Color.RED); 
     panelMain.add(panelRed, "Red"); 
     panelBlue = new JPanel(); 
     panelBlue.setBackground(Color.BLUE); 
     panelMain.add(panelBlue, "Blue"); 

     add(panelMain); 

    } 

    private void createMenu() { 
     menu = new JMenu("Change To"); 
     JMenuItem miRed = new JMenuItem("Red"); 
     miRed.addActionListener(this); 
     menu.add(miRed); 
     JMenuItem miBlue = new JMenuItem("Blue"); 
     miBlue.addActionListener(this); 
     menu.add(miBlue); 

     JMenuBar bar = new JMenuBar(); 
     bar.add(menu); 

     setJMenuBar(bar); 

    } 

    public static void main(String[] args) { 

     JMenuExample frame = new JMenuExample(); 
     frame.createUI(); 
     frame.setSize(150, 200); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 

    } 

    @Override 
    public void actionPerformed(ActionEvent e) { 
     if (e.getSource() instanceof JMenuItem) { 
      JMenuItem mi = (JMenuItem) e.getSource(); 
      layout.show(panelMain, mi.getText()); 

     } 
    } 
} 

希望這有助於