【发布时间】:2018-03-18 22:22:41
【问题描述】:
在我的 Codename One 应用程序中,样式是在 css 中定义的。即我基于this great video tutorial 设计的侧边菜单。所以我的风格定义如下:
SideMenuTagLine {
cn1-derive: "SideCommand";
text-align: right;
padding-left: 0mm;
padding-right: 0mm;
padding-top: 1mm;
padding-bottom: 0mm;
margin-right: 3mm;
font-family: "native:ItalicLight";
font-size: 3mm;
}
当我测试以斜体显示的标语时,但随后我在 css 上进一步工作以添加其他样式,突然标语失去了斜体(模拟器和真实设备)。
要让它重新出现,我必须删除 myTheme.css.res 文件。但是,当我再次更改 css 样式(不是 SideMenuTagLine 或 SideCommand)时,标语 Italic 会丢失。也许其他样式也丢失了,但我没有注意到。
这是我第一次生成 res 文件时得到的预览(从不存在的 myTheme.css.res 文件开始)。人们可能会注意到KmLabelProgress 对齐在未选中和选中选项卡之间发生了变化,尽管我没有更改它。 :
然后,如果我更改 css 文件中的任何内容(例如:选择器的颜色),我会得到以下生成的 res 文件。在这种情况下,不会发生上述对齐更改:
请注意:这也是最新 (3.7.3) CN1 插件版本中的行为(与之前的版本一样)。
如何确保应用我在 css 文件中定义的 css 样式?
任何帮助表示赞赏,
2017 年 10 月 9 日编辑: 这是我从命令行使用设计器打开生成的 res 文件时得到的堆栈跟踪的开头:
2017-10-09 10:37:09.388:INFO:oejs.Server:jetty-8.0.y.z-SNAPSHOT
2017-10-09 10:37:09.441:INFO:oejs.AbstractConnector:Started
SelectChannelConnector@0.0.0.0:9000 STARTING
oct. 09, 2017 10:37:09 AM org.jdesktop.application.LocalStorage getId
AVERTISSEMENT: unspecified resource Application.id using ResourceEditorApp
Exception in thread "AWT-EventQueue-0" java.lang.StackOverflowError
at java.awt.KeyboardFocusManager.getCurrentKeyboardFocusManager(KeyboardFocusManager.java:216)
at java.awt.KeyboardFocusManager.processCurrentLightweightRequests(KeyboardFocusManager.java:2621)
at java.awt.KeyboardFocusManager.retargetFocusEvent(KeyboardFocusManager.java:2946)
at java.awt.Component.dispatchEventImpl(Component.java:4752)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
请注意:完整的堆栈跟踪比 SO 上的允许长度长。
【问题讨论】:
-
您能否缩小导致斜体丢失的特定更改的范围?您能否在设计器中查看生成的 res 文件,或者尝试在运行时使用模拟器样式编辑器操作样式,看看是什么触发了这种情况?
-
感谢Shai 的支持。删除
cn1-derive指令并没有改变任何东西:当我添加或修改另一种样式(关于填充、边距、字体)时,SideTagLine斜体会丢失(但不会丢失保持白色的派生颜色)。再次修改SideTagLine会使斜体再次出现。如果我能找到生成的 res 文件的内容,我会及时通知您。 -
组件检查器不允许我打开任何主题样式:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 at com.codename1.ui.util.EditableResources.getTheme(EditableResources.java:1845) at com.codename1.designer.ResourceEditorApp.main(ResourceEditorApp.java:211) -
生成的 res 文件无法在设计器中打开(错误但弹出对话框中没有显示任何内容),但 theme.res 可以。如果我删除生成的 res 文件,则应用所有 css 定义的样式。但是,如果我在某处更改填充,那么所有样式都会丢失(字体颜色除外)。所以看起来css文件中有一个导致问题的指令。
-
取消选中设计器工具中的文件 -> XML 团队模型选项。那应该解决删除的需要。 CSS 在 res 文件中生成了什么?
标签: css codenameone