如何获得要在自定义图像选择器对话框中渲染的Codenameone FontImage和描述的列表?
我正在使用CN1构建我的应用程序,我想创建一个屏幕,用户可以在其中搜索并从可用材料字体图像列表中选择。请告诉我如何获取此列表,即我需要搜索字符代码\uE900和描述。我非常想复制CN1在其酷炫的新GUI构建器中构建的对话框 通过使用相同的方法,这有望意味着随着CN1团队加入更多,列表将自动增长 我曾想过将FontImage类文本从Github解构成一个可管理的列表,但我不认为这是未来的证明 一旦我有了此列表,我就可以使用以下方法将其应用于按钮平铺网格:如何获得要在自定义图像选择器对话框中渲染的Codenameone FontImage和描述的列表?,image,codenameone,Image,Codenameone,我正在使用CN1构建我的应用程序,我想创建一个屏幕,用户可以在其中搜索并从可用材料字体图像列表中选择。请告诉我如何获取此列表,即我需要搜索字符代码\uE900和描述。我非常想复制CN1在其酷炫的新GUI构建器中构建的对话框 通过使用相同的方法,这有望意味着随着CN1团队加入更多,列表将自动增长 我曾想过将FontImage类文本从Github解构成一个可管理的列表,但我不认为这是未来的证明 一旦我有了此列表,我就可以使用以下方法将其应用于按钮平铺网格: gui_IconButton.setIco
gui_IconButton.setIcon(
FontImage.createFixed("\uE900", FontImage.getMaterialDesignFont(), 0xffffff, 20, 20).toImage());
尽管也许有一种更简洁的实现方法,可以提供与上图相同的LAF
非常感谢。为该对话框所做的是:
private static List<MaterialFont> getMaterialFonts(){
ArrayList<MaterialFont> list = new ArrayList<>();
list.add(new MaterialFont(FontImage.MATERIAL_3D_ROTATION, "3d rotation"));
list.add(new MaterialFont(FontImage.MATERIAL_AC_UNIT, "ac unit"));
list.add(new MaterialFont(FontImage.MATERIAL_ACCESS_ALARM, "access alarm"));
list.add(new MaterialFont(FontImage.MATERIAL_ACCESS_ALARMS, "access alarms"));
list.add(new MaterialFont(FontImage.MATERIAL_ACCESS_TIME, "access time"));
...
}
static class MaterialFont implements Comparable<MaterialFont>{
private char icon;
private String description;
public MaterialFont(char icon, String description) {
this.icon = icon;
this.description = description;
}
@Override
public int compareTo(MaterialFont o) {
return description.compareTo(((MaterialFont)o).description);
}
}
然后您可以只做一个元数据页眉和页脚,并将sed命令的输出与cat命令结合起来。对Unix有一定的了解,但我通常可以解决问题。我会一直玩这些命令,直到有什么事情发生。谢谢
javap -classpath ~/dev/cn1/CodenameOne/dist/CodenameOne.jar com.codename1.ui.FontImage | grep MATERIAL_ | sed 's/ public static final char //' | sed 's/MATERIAL_*//g' | sed 's/;//' | sed 's/.*/ list.add(new MaterialFont(FontImage.MATERIAL_&, "&");/'