我们希望将数据从服务器推送到客户端,但只能使用HTTP(端口80).消息传递的最佳解决方案是什么?一个想法是Comet.是否有其他想法或框架可以提供JMS over HTTP.(是的,ActiveMQ也支持它,但是哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇.
我们使用的是最新的JDK 7(u45)和ProGuard版本4.10
在混淆之后,最初开始我们的分发失败,出现以下错误:
Exception in thread "main" java.lang.VerifyError: Expecting a stackmap frame at
branch target 155
Exception Details:
Location:
com/bla/bla/service/ioc/SpringBootstrap.c()V @0: getstatic
Reason:
Expected stackmap frame at this location.
Bytecode:
0000000: b200 73b6 008b 9900 82b2 0073 b800 933b
0000010: 1a99 0074 b200 73b6 008d 9900 6bb2 0074
0000020: 1221 b600 cfb8 0092 4c2b b600 9c12 1db9
...
Exception Handler Table:
bci [0, 152] => handler: 155
at java.lang.Class.getDeclaredMethods0(Native Method)
at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
at java.lang.Class.getMethod0(Unknown Source)
at java.lang.Class.getMethod(Unknown Source)
at …
Run Code Online (Sandbox Code Playgroud) 是否有任何简单的方法让TreeTableView(或TableView)尝试在焦点丢失时提交值?
不幸的是,我没有成功使用javafx TableCellFactories的任何默认实现,这就是为什么我尝试了自己的TreeTableCell实现以及一些不同的tableCell实现,比如来自Graham Smith的实现,这似乎是最直接的,因为它已经实现了一个钩子焦点丢失,但仍然没有提交值,用户更改重置为原始值.
我的猜测是,每当焦点丢失时,受影响的Cell的editingProperty总是为false,这导致Cell永远不会在focusLost上提交值.这里是原始(oracle-)TreeTableCell实现(8u20ea)的相关部分,它导致我的方法失败:
@Override public void commitEdit(T newValue) {
if (! isEditing()) return; // <-- here my approaches are blocked, because on focus lost its not editing anymore.
final TreeTableView<S> table = getTreeTableView();
if (table != null) {
@SuppressWarnings("unchecked")
TreeTablePosition<S,T> editingCell = (TreeTablePosition<S,T>) table.getEditingCell();
// Inform the TableView of the edit being ready to be committed.
CellEditEvent<S,T> editEvent = new CellEditEvent<S,T>(
table,
editingCell,
TreeTableColumn.<S,T>editCommitEvent(),
newValue
);
Event.fireEvent(getTableColumn(), editEvent);
}
// inform parent classes of the commit, …
Run Code Online (Sandbox Code Playgroud) 我有一个mvp结构化的javafx应用程序.有一个带有textfield的视图,它有自己的textProperty类型StringProperty
.还有一个包含名为Item的Object的模型.物品有一个IntegerProperty
.
现在我想在我的演示者类中绑定这两个属性,以便在一个或另一个更改时更新它们.虽然他们有不同的类型,但有可能通过以下方式绑定它们:
Bindings.bindBidirectional( textField.textProperty(), item.percentProperty(), new NumberStringConverter() );
Run Code Online (Sandbox Code Playgroud)
这非常NullPointerException
合适,除非文本字段的值被清除,这导致a ,因为textProperty的空值导致Null值并IntegerProperty
在a 中的结果中设置null值NullPointerException
.你能想出任何避免这种情况的方法吗?我必须自己写NumberStringConverter
吗?
此外,我想定义,Item
只能保持0到100之间的百分比值.当值无效时,应通知View,以便用户可以获得反馈.我应该在哪里验证这些业务规则?
我想出了第一个例子,但我不确定,如果这应该是要走的路,所以我很好奇,如果你有更好的想法如何解决这个问题.
class PercentProperty extends SimpleIntegerProperty
{
private InvalidValueListener invalidValueListener = null;
public PercentProperty ( final Integer defaultValue )
{
set( defaultValue );
}
@Override
public void set( final int newValue )
{
if ( isValid( newValue ) )
{
super.set( newValue );
if ( invalidValueListener != null )
invalidValueListener.validValue();
}
else
{
if …
Run Code Online (Sandbox Code Playgroud) 几年来,我们org.bushe.swing.event.EventBus
主要使用swing桌面应用程序.API非常一致且易于使用.但是现在新的要求已经得到了遏制,并且它需要一些EventSubscribers应该优先于其他的,因为它们是同步通知的.因此,这些订户需要某种优先级因素.
扩展EventBus以优先使用EventSubscribers不应该是一个很大的问题,但由于org.bushe.swing.event.EventBus
已经过时,我不确定,如果更改EventBus实现可能更好.
org.bushe.swing.event.EventBus本身推荐GWT的GWT Eventbus等项目.我不确定,如果这也是摆动应用的好方法.您经常使用哪种EventBus实现?您是否知道支持订户优先级的简单实施?
有时候我倾向于使用eclipse(3.5)中的自动完成来获取匿名内部类型.出于某种原因,eclipse总是以错误的顺序放置结尾括号和分号.一个小例子:
button.addActionListener( new Act... ) // <-- Pressing Autocomplete (strg+space)
Run Code Online (Sandbox Code Playgroud)
结果是:
button.addActionListener( new ActionListener()
{
@Override
public void actionPerformed( ActionEvent e )
{
// TODO Auto-generated method stub
}
};) // <-- why?
Run Code Online (Sandbox Code Playgroud)
Didnt在Eclipse的编码模板中找到了它.我也不能切换到3.6,虽然我不知道,如果那已经"修复"了(如果这甚至应该是一个错误),因为eclipse可能只是不知道,它必须使用自动完成后面的括号.猜测处理有点复杂,因为他不会检查自动完成背后的字符,所以他不能使用结束括号?纠正我,如果我错了.
猜猜我只有一个糟糕的一天(常见的星期一!),这就是为什么它现在让我感到厌恶,但也许有人知道如何影响这种行为?
问候,ymene
我想知道,如果有任何算法可以通过其背景颜色确定最佳字体颜色的可读性.
例如:我创建了一个包含动态文本和颜色的图标.如果颜色有点暗,我希望它将字体颜色设置为白色,如果颜色相当明亮,我希望它是黑色(或者甚至是灰色).
public DynamicIcon( String iconText, Color backgroundColor )
{
this.iconText = iconText;
this.backgroundColor = backgroundColor;
this.fontColor = determineFontColor( backgroundColor );
}
//This is what I need (Pseudocode):
private fontColor determineFontColor( Color backgroundColor )
{
if( backgroundColor == bright )
return Color.BLACK;
if( backgroundColor == dark )
return Color.WHITE;
//If possible:
if( backgroundColor == somethingInBetween )
return Color.GRAYISH;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,我没有找到任何类似的算法,尽管我很确定,它已经存在了.有人有什么想法吗?
谢谢,ymene
我想修改它的点击行为TreeTableView
,但老实说,我不确定这样做的预期方式是什么样的,或者它是否可以以任何方式改变.
大多数用户抱怨目前的行为不一致.有时单击一个单元格已经折叠/展开了treeitem,有时需要双击.这与编辑模式的初始化一起可能是一种痛苦.所以我很乐意自己处理点击行为.
我能够将行为缩小到TreeTableCellBehavior
类:
@Override
protected void handleClicks(MouseButton button, int clickCount, boolean isAlreadySelected) {
// handle editing, which only occurs with the primary mouse button
TreeItem<S> treeItem = getControl().getTreeTableRow().getTreeItem();
if (button == MouseButton.PRIMARY) {
if (clickCount == 1 && isAlreadySelected) {
edit(getControl());
} else if (clickCount == 1) {
// cancel editing
edit(null);
} else if (clickCount == 2 && treeItem.isLeaf()) {
// attempt to edit
edit(getControl());
} else if (clickCount % 2 == 0) {
// …
Run Code Online (Sandbox Code Playgroud) 正如我已经解释过的那样,当用户在JXDatePicker中编辑日期时,他可以选择,天气他再次以相同的格式输入它,默认情况下是dd.MM.yyyy或者只是dd.MM.yy .当他使用短形式时,我希望Picker选择当前的世纪.
例:
27.01.2012 edited to 27.01.10 should result in 27.01.2010
Run Code Online (Sandbox Code Playgroud)
以及:
27.01.2012 edited to 27.01.2010 should also result in 27.01.2010
Run Code Online (Sandbox Code Playgroud)
默认情况下,JXDatePicker以下列方式处理它:
27.01.2012 edited to 27.01.10 results in 27.01.0010
Run Code Online (Sandbox Code Playgroud)
这不是我希望它工作的方式.经过一些简短的研究后,我在SimpleDateFormat中找到了以下方法
/**
* Sets the 100-year period 2-digit years will be interpreted as being in
* to begin on the date the user specifies.
*
* @param startDate During parsing, two digit years will be placed in the range
* <code>startDate</code> to <code>startDate + 100 years</code>.
*/
public void set2DigitYearStart(Date startDate) …
Run Code Online (Sandbox Code Playgroud) 想象一下以下情况:我们从某些外部工具收到一个 xml 文件。最近,在此 xml 中,节点名中或其 richcontent 标记中可能存在一些转义字符,如以下示例(简化)所示:
<map>
<node TEXT="Project">
<node TEXT="ää">
<richcontent TYPE="NOTE"><html>
<head>
</head>
<body>
<p>
I am a Note for Node ää!
</p>
</body>
</html>
</richcontent>
</node>
</node>
</map>
Run Code Online (Sandbox Code Playgroud)
使用 JAXB 解组文件后,那些转义的字符就不会转义。不幸的是,我需要他们保持原样,这意味着逃跑。有什么方法可以避免在解组时取消转义这些字符?
在研究时,我发现了很多有关编组 xml 文件的问题,其中出现了相反的问题,但这些也没有帮助我:
是否有可能使用 JAXB 来实现这一目标,或者我们是否必须考虑更改为不同的 xml 读取器 API?
提前谢谢你,ymene
java ×9
swing ×3
javafx ×2
autocomplete ×1
behavior ×1
binding ×1
colors ×1
comet ×1
eclipse ×1
escaping ×1
event-bus ×1
focus ×1
fonts ×1
http ×1
java-7 ×1
javafx-8 ×1
jms ×1
messaging ×1
mouseevent ×1
obfuscation ×1
proguard ×1
properties ×1
regex ×1
swingx ×1
tableview ×1
templates ×1
validation ×1
verification ×1
xml ×1