gpt4 book ai didi

java - Accordion 菜单在 java 中显示一组图像

转载 作者:行者123 更新时间:2023-11-30 11:53:55 25 4
gpt4 key购买 nike

我正在做一个 Java 项目,其中包含一些图形内容。我想在 Accordion 菜单之类的东西下显示一组 BufferedImages。这意味着当我单击一个 Accordion 菜单根项时,它应该显示该名称下的一组图像,而当单击另一个根菜单项时,它应该显示另一组图像。我如何用 Java 实现它?有没有办法将 JPanel 添加为 Accordion 菜单叶项?如果有人可以提供示例代码,那就太好了。

最佳答案

无法抗拒一些乐趣:事实证明,可以稍微调整 JXTaskPaneContainer(在 SwingX 中)使其表现得类似于 Accordion 。它只需要强制最多扩展其中一个包含的 JXTaskPaneContainer。类似于代码片段:

    JXTaskPaneContainer container = new JXTaskPaneContainer() {

private JXTaskPane current;

private PropertyChangeListener expansionListener;

/**
* @inherited <p>
*/
@Override
protected void addImpl(Component comp, Object constraints, int index) {
super.addImpl(comp, constraints, index);
if (comp instanceof JXTaskPane) {
grabExpansionControl((JXTaskPane) comp);
}
}

private void grabExpansionControl(JXTaskPane comp) {
if (current != null) {
comp.setCollapsed(true);
} else {
current = comp;
comp.setCollapsed(false);
}
comp.addPropertyChangeListener("collapsed",
getExpansionListener());
}

private void updateCurrentTaskPane(JXTaskPane source) {
if (source != current) {
if (!source.isCollapsed()) {
if (current != null) {
current.setCollapsed(true);
}
current = source;
}
}
}

private PropertyChangeListener createExpansionListener() {
PropertyChangeListener l = new PropertyChangeListener() {

@Override
public void propertyChange(PropertyChangeEvent evt) {
// TODO Auto-generated method stub
updateCurrentTaskPane((JXTaskPane) evt.getSource());
}
};
return l;
}


private PropertyChangeListener getExpansionListener() {
if (expansionListener == null) {
expansionListener = createExpansionListener();
}
return expansionListener;
}


};
((VerticalLayout) container.getLayout()).setGap(0);

关于java - Accordion 菜单在 java 中显示一组图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6010498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com