当前位置: 代码迷 >> J2SE >> 求用Swing做的QQ式抽屉菜单,多谢
  详细解决方案

求用Swing做的QQ式抽屉菜单,多谢

热度:114   发布时间:2016-04-24 12:30:11.0
求用Swing做的QQ式抽屉菜单,谢谢
求用Swing做的QQ式抽屉菜单,谢谢

------解决方案--------------------
Java code
import java.awt.*;import java.awt.event.*;import java.awt.font.*;import java.awt.image.BufferedImage;import javax.swing.*;public class ExpandingPanels extends MouseAdapter {    ActionPanel[] aps;    JPanel[] panels;    public ExpandingPanels() {        assembleActionPanels();        assemblePanels();    }    public void mousePressed(MouseEvent e) {        ActionPanel ap = (ActionPanel) e.getSource();        if (ap.target.contains(e.getPoint())) {            ap.toggleSelection();            togglePanelVisibility(ap);        }    }    private void togglePanelVisibility(ActionPanel ap) {        int index = getPanelIndex(ap);        if (panels[index].isShowing())            panels[index].setVisible(false);        else            panels[index].setVisible(true);        ap.getParent().validate();    }    private int getPanelIndex(ActionPanel ap) {        for (int j = 0; j < aps.length; j++)            if (ap == aps[j])                return j;        return -1;    }    private void assembleActionPanels() {        String[] ids = { "level 1", "level 2", "level 3", "level 4" };        aps = new ActionPanel[ids.length];        for (int j = 0; j < aps.length; j++)            aps[j] = new ActionPanel(ids[j], this);    }    private void assemblePanels() {        GridBagConstraints gbc = new GridBagConstraints();        gbc.insets = new Insets(2, 1, 2, 1);        gbc.weightx = 1.0;        gbc.weighty = 1.0;        JPanel p1 = new JPanel(new GridBagLayout());        gbc.gridwidth = gbc.RELATIVE;        p1.add(new JButton