用swing做一个横向菜单导航条,点击菜单按钮可切换不同面板
时间: 2023-08-31 17:22:35 浏览: 70
### 回答1:
好的,以下是使用Swing制作一个横向菜单导航条,可以通过单击菜单按钮来切换不同的面板的示例代码:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class HorizontalMenuDemo extends JFrame implements ActionListener {
private JPanel contentPane;
private JButton btnPanel1, btnPanel2, btnPanel3;
private JPanel panel1, panel2, panel3;
private JLabel lblTitle;
public HorizontalMenuDemo() {
setTitle("Horizontal Menu Demo");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 300);
setLocationRelativeTo(null);
contentPane = new JPanel(new BorderLayout());
JPanel menuPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
btnPanel1 = new JButton("Panel 1");
btnPanel1.addActionListener(this);
menuPanel.add(btnPanel1);
btnPanel2 = new JButton("Panel 2");
btnPanel2.addActionListener(this);
menuPanel.add(btnPanel2);
btnPanel3 = new JButton("Panel 3");
btnPanel3.addActionListener(this);
menuPanel.add(btnPanel3);
panel1 = new JPanel();
panel1.setBackground(Color.RED);
lblTitle = new JLabel("Panel 1", SwingConstants.CENTER);
panel1.add(lblTitle);
panel2 = new JPanel();
panel2.setBackground(Color.BLUE);
lblTitle = new JLabel("Panel 2", SwingConstants.CENTER);
panel2.add(lblTitle);
panel3 = new JPanel();
panel3.setBackground(Color.GREEN);
lblTitle = new JLabel("Panel 3", SwingConstants.CENTER);
panel3.add(lblTitle);
contentPane.add(menuPanel, BorderLayout.NORTH);
contentPane.add(panel1, BorderLayout.CENTER);
setContentPane(contentPane);
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == btnPanel1) {
contentPane.remove(panel2);
contentPane.remove(panel3);
contentPane.add(panel1, BorderLayout.CENTER);
contentPane.revalidate();
contentPane.repaint();
} else if (e.getSource() == btnPanel2) {
contentPane.remove(panel1);
contentPane.remove(panel3);
contentPane.add(panel2, BorderLayout.CENTER);
contentPane.revalidate();
contentPane.repaint();
} else if (e.getSource() == btnPanel3) {
contentPane.remove(panel1);
contentPane.remove(panel2);
contentPane.add(panel3, BorderLayout.CENTER);
contentPane.revalidate();
contentPane.repaint();
}
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new HorizontalMenuDemo();
}
});
}
}
```
在这个示例中,使用了三个JPanel分别代表三个不同的面板,用于显示不同的内容。还创建了三个JButton,代表三个不同的菜单按钮,单击它们可以切换不同的面板。
每个JButton都注册了ActionListener,当单击按钮时,将调用actionPerformed()方法,该方法根据按钮的不同,使用contentPane的remove()方法删除当前面板,并将新面板添加到contentPane中,然后使用revalidate()和repaint()方法使更改生效。
希望这个示例可以帮助你了解如何使用Swing创建横向菜单导航条。
### 回答2:
使用swing制作横向菜单导航条是相对简单的,可以按照以下步骤进行:
1. 创建一个JFrame容器作为主窗口,设置布局管理器为FlowLayout,并设置宽度和高度。
2. 创建一个JPanel作为菜单栏容器,设置布局管理器为FlowLayout,并添加到主窗口的北部。
3. 在菜单栏容器中创建多个JButton作为菜单按钮,并设置宽度和高度,然后添加到容器中。
4. 创建多个JPanel作为不同的面板,并设置布局管理器,然后添加到主窗口中。
5. 为每个菜单按钮添加监听器,当点击时执行相应的操作。在监听器的方法内,使用CardLayout布局管理器切换不同的面板。
6. 在每个面板中添加组件,用以展示不同的内容。
7. 设置主窗口的可见性为true,以展示整个界面。
以下是代码示例:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class HorizontalMenu {
private JFrame frame;
private JPanel menuBar;
private JPanel contentPanel;
private JPanel firstPanel;
private JPanel secondPanel;
public HorizontalMenu() {
frame = new JFrame("横向菜单导航条");
frame.setLayout(new BorderLayout());
frame.setSize(300, 200);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
menuBar = new JPanel();
menuBar.setLayout(new FlowLayout());
frame.add(menuBar, BorderLayout.NORTH);
contentPanel = new JPanel();
contentPanel.setLayout(new CardLayout());
frame.add(contentPanel, BorderLayout.CENTER);
firstPanel = new JPanel();
firstPanel.add(new JLabel("第一个面板"));
contentPanel.add(firstPanel, "first");
secondPanel = new JPanel();
secondPanel.add(new JLabel("第二个面板"));
contentPanel.add(secondPanel, "second");
JButton firstButton = new JButton("第一个");
JButton secondButton = new JButton("第二个");
firstButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
CardLayout cardLayout = (CardLayout) contentPanel.getLayout();
cardLayout.show(contentPanel, "first");
}
});
secondButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
CardLayout cardLayout = (CardLayout) contentPanel.getLayout();
cardLayout.show(contentPanel, "second");
}
});
menuBar.add(firstButton);
menuBar.add(secondButton);
frame.setVisible(true);
}
public static void main(String[] args) {
new HorizontalMenu();
}
}
```
这样,点击菜单按钮就能切换到相应的面板,从而实现了横向菜单导航条的效果。
### 回答3:
使用Swing可以很方便地实现一个横向菜单导航条,并且通过点击菜单按钮可以切换不同的面板。
首先,我们可以使用JMenuBar和JMenu来创建菜单栏和菜单。在每个菜单中,可以添加多个JMenuItem作为菜单项,每个菜单项表示切换到不同的面板。
接着,我们可以使用CardLayout管理不同的面板。CardLayout可以让我们在同一个容器中切换不同的面板。我们可以创建多个面板,并将它们添加到同一个容器中,每个面板表示不同的页面内容。在菜单项的ActionListener中,我们可以通过CardLayout#show方法来显示对应的面板。
下面是一个简单的示例代码:
```
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class MenuNavigationExample extends JFrame {
private JPanel mainPanel;
private CardLayout cardLayout;
public MenuNavigationExample() {
setTitle("横向菜单导航条");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// 创建菜单栏
JMenuBar menuBar = new JMenuBar();
setJMenuBar(menuBar);
// 创建菜单
JMenu menu1 = new JMenu("菜单1");
JMenu menu2 = new JMenu("菜单2");
// 创建菜单项
JMenuItem item1 = new JMenuItem("面板1");
JMenuItem item2 = new JMenuItem("面板2");
// 添加菜单项的点击事件监听
item1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
cardLayout.show(mainPanel, "面板1");
}
});
item2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
cardLayout.show(mainPanel, "面板2");
}
});
// 将菜单项添加到菜单中
menu1.add(item1);
menu2.add(item2);
// 将菜单添加到菜单栏
menuBar.add(menu1);
menuBar.add(menu2);
// 创建主面板
mainPanel = new JPanel();
cardLayout = new CardLayout();
mainPanel.setLayout(cardLayout);
// 创建面板1和面板2
JPanel panel1 = new JPanel();
panel1.setBackground(Color.WHITE);
JPanel panel2 = new JPanel();
panel2.setBackground(Color.LIGHT_GRAY);
// 将面板添加到主面板
mainPanel.add(panel1, "面板1");
mainPanel.add(panel2, "面板2");
// 设置主面板为内容面板
setContentPane(mainPanel);
pack();
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new MenuNavigationExample();
}
});
}
}
```
以上示例代码是一个简单的使用Swing实现横向菜单导航条的例子。当点击菜单项时,将会切换到对应的面板。你也可以根据自己的需求,进行进一步的定制和修改。