之前的文章主要介绍了如何在Flamingo-Ribbon菜单中添加Flamingo的功能组件。其实在Flamingo中还可以添加Swing组件比如复选框、下拉选框、颜色按钮等。这边文章主要介绍的就是如何在Flamingo的Ribbon菜单中添加JComponent组件。
在看这篇文章之前建议先看如下的一些文章。当然如果对Flamino-Ribbon已经有一些基本的了解的则不用看了。
01.关于Flamingo-Ribbon的安装与使用:Flamingo-Ribbon的使用01:安装与初始使用
02.关于Fiamingo-Ribbon界面风格设置:Flamingo-Ribbon的使用02:更改界面风格
03.关于Flamingo-Ribbon按钮样式更改:Flamingo-Ribbon的使用03:按钮中添加图片和更改样式
04.关于Flamingo-Ribbon按钮模式更改:Flamingo-Ribbon的使用04:按钮(JCommandButton)模式更改
05.关于Flamingo-Ribbon小组件的添加:Flamingo-Ribbon的使用05:小组件
在Ribbon中添加JComponent用到的Band不是JRibbonBand,而是JFlowRibbonBand。下面介绍几种组件的添加方式。
1 添加JCombobox组件
在Ribbon中添加一个JCombobox的代码如下:
JFlowRibbonBand flowRibbonBand = new JFlowRibbonBand("FlowRibbon", null);
JComboBox com = new JComboBox();
com.addItem("JComboboxItem1");
com.addItem("JComboboxItem2");
flowRibbonBand.addFlowComponent(com);
运行上述代码结果如下:
2 添加颜色组件
在Swing中,颜色组件的类为JColorChooser,该组件有多个颜色面板,可以通过getChooserPanels()方法取出所有的面板,然后将其中一个面板添加到Band中去:
JColorChooser colorChooser = new JColorChooser();
JComponent[] c = colorChooser.getChooserPanels();
flowRibbonBand.addFlowComponent(c[0]);
运行上述代码结果如下:
修改上述代码,将c[0]该成c[2],可以看到界面如下:
flowRibbonBand.addFlowComponent(c[2]);
3 全部代码
上述完整代码如下:
import java.awt.Dimension;
import javax.swing.JColorChooser;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import org.pushingpixels.flamingo.api.common.icon.ImageWrapperResizableIcon;
import org.pushingpixels.flamingo.api.common.icon.ResizableIcon;
import org.pushingpixels.flamingo.api.ribbon.JFlowRibbonBand;
import org.pushingpixels.flamingo.api.ribbon.JRibbon;
import org.pushingpixels.flamingo.api.ribbon.JRibbonFrame;
import org.pushingpixels.flamingo.api.ribbon.RibbonTask;
public class MainFrame extends JRibbonFrame {
static {
// 设置界面风格:获取系统样式
try {
javax.swing.UIManager.setLookAndFeel(
"org.pushingpixels.substance.api.skin.SubstanceOfficeBlue2007LookAndFeel");
} catch (Exception e) {
e.printStackTrace();
}
}
//根据图片的地址获取该图片,返回ResizableIcon
public static ResizableIcon getResizableIconFromResource(String resource) {
return ImageWrapperResizableIcon.getIcon(
MainFrame.class.getClassLoader().getResource(resource),
new Dimension(48, 48));
}
public static void main(String[] args) {
JFrame.setDefaultLookAndFeelDecorated(true); //windows功能失效
JDialog.setDefaultLookAndFeelDecorated(true); //Dialog功能失效
SwingUtilities.invokeLater(new Runnable() {
@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public void run() {
MainFrame frame = new MainFrame();
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
JFlowRibbonBand flowRibbonBand = new JFlowRibbonBand("FlowRibbon1", null);
JFlowRibbonBand flowRibbonBand2 = new JFlowRibbonBand("FlowRibbon2", null);
JComboBox com = new JComboBox();
com.addItem("JComboboxItem1");
com.addItem("JComboboxItem2");
JColorChooser colorChooser = new JColorChooser();
JComponent[] c = colorChooser.getChooserPanels();
flowRibbonBand.addFlowComponent(com);
flowRibbonBand2.addFlowComponent(c[0]);
//新建一个Task,并将Band添加到该Task中去
RibbonTask task1 = new RibbonTask("One", flowRibbonBand, flowRibbonBand2);
JRibbon ribbon = frame.getRibbon();
ribbon.addTask(task1);
frame.pack();
frame.setVisible(true);
}
});
}
}
运行结果如下: