gpt4 book ai didi

带面板的 Java Swing JToolbar : look & feel

转载 作者:行者123 更新时间:2023-12-01 14:39:31 24 4
gpt4 key购买 nike

我有一个 JToolbar ,其中包含多个 JPanel (需要它,因为我希望每个都有特定的边框)。不幸的是,Look&Feel 管理器无法将 JPanels 识别为属于工具栏,因此 JButtons 被渲染为普通按钮(即,没有特殊的鼠标悬停效果)工具栏)。

JToolbars 替换 JPanels 不是一个选项,因为 LAF 渲染器为其提供了特殊的背景。

还有其他选项/提示吗?

最佳答案

如下所示,您可以根据需要更改工具栏的布局并添加组件。您还可以拥有任意数量的工具栏。 L&F 组合显示 here 。请注意,JToolBaraddSeparator() 方法提供了 L&F 特定的 JToolBar.Separator

test image

import component.Laf;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import javax.swing.AbstractAction;
import javax.swing.Action;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToolBar;

/**
* @see https://stackoverflow.com/a/16121288/230513
*/
public class JToolBarTest {

private void display() {
JFrame f = new JFrame("Test");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLayout(new BoxLayout(f.getContentPane(), BoxLayout.Y_AXIS));
// https://stackoverflow.com/a/11949899/230513
f.add(Laf.createToolBar(f));
f.add(createBar());
f.add(createBar());
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}

private JToolBar createBar() {
JToolBar toolBar = new JToolBar();
toolBar.add(createPanel());
toolBar.addSeparator();
toolBar.add(createPanel());
return toolBar;
}

private JPanel createPanel() {
JPanel panel = new JPanel();
panel.setBorder(BorderFactory.createTitledBorder("Panel"));
Action buttonAction = new AbstractAction("Button"){

@Override
public void actionPerformed(ActionEvent e) {
System.out.println(e.getActionCommand()
+ " " + e.getSource().hashCode());
}
};
panel.add(new JButton(buttonAction));
panel.add(new JButton(buttonAction));
return panel;
}

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
new JToolBarTest().display();
}
});
}
}

关于带面板的 Java Swing JToolbar : look & feel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16119600/

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