我知道我可以在AttributeSet上设置一个字体系列,如下所示:
SimpleAttributeSet set = new SimpleAttributeSet();
StyleConstants.setFontFamily(set, "Monospace");
doc.insertString(
caretPosition, text, set);
Run Code Online (Sandbox Code Playgroud)
但我真正想要做的是设置一个字体:
StyleConstants.setFont(set, "Courier New");
Run Code Online (Sandbox Code Playgroud)
但是,没有StyleConstants.setFont()方法.
那么如何在AttributeSet上设置字体?(请注意,除了SimpleAttributeSet之外,我可以自由地使用AttributeSet的实现.我只是碰巧使用那个.)
(请注意,我的真正目标是使用指定的字体将字符串插入到Document中.)
我在server.R中有以下代码:
library(shiny)
source("helpers.R")
shinyServer(function(input, output) {
output$txtOutput1 <- renderText({
someLengthyComputation(input$txtInput)[1]
})
output$txtOutput2 <- renderText({
someLengthyComputation(input$txtInput)[2]
})
output$txtOutput3 <- renderText({
someLengthyComputation(input$txtInput)[3]
})
})
Run Code Online (Sandbox Code Playgroud)
helpers.R包含someLengthyComputation返回大小为3的向量的方法.如何在每次txtInput更改时调用它三次,并且在更新所有三个文本输出控件时只调用一次?
我有一个包含以下(Java)代码的方法:
doSomeThings();
doSomeOtherThings();
Run Code Online (Sandbox Code Playgroud)
doSomeThings()创建一些线程,每个线程只运行一段有限的时间.问题是我不希望在完成doSomeOtherThings()所有启动的线程之前被调用doSomeThings().(doSomeThings()还会调用可能启动新线程的方法等等.我不想在doSomeOtherThings()所有这些线程完成之前执行.)
这是因为doSomeThings(),除其他事项外将设置myObject到null,而doSomeOtherThings()电话myObject.myMethod(),我不希望myObject是null在那个时候.
是否有一些标准的方法来做这种事情(在Java中)?
我有以下Java代码:
final Future future = exeService.submit(
new Runnable() {
public void run() {
myObject.doSomething();
}
}
);
future.get();
Run Code Online (Sandbox Code Playgroud)
在哪里exeService是一个实例
java.util.concurrent.ExecutorService
Run Code Online (Sandbox Code Playgroud)
问题是myObject.doSomething()永远不会返回,因此future.get()永远不会返回.
但是,如果我将调用替换submit为execute这样的调用:
exeService.execute(
new Runnable() {
public void run() {
myObject.doSomething();
}
}
);
Run Code Online (Sandbox Code Playgroud)
呼叫myObject.doSomething()确实返回.我不知道这是否重要,但这doSomething()是一种void方法.
为什么doSomething()在使用execute时完成但在使用时没有submit?
另外,我不需要使用Future.get(); 这似乎是最自然的方式.(我也遇到了同样的问题CountdownLatch.)重点是我需要等待才能doSomething()继续完成,并且由于复杂的原因我不会进入这里,我需要在一个单独的线程上启动它.如果有另一种方法可以做到这一点,那就没问题了.
如果你没有完全填充它,GridLayout是否不会遵守你指定的行数和列数?
我正在创建一个包含3行和4列的GridLayout.但是,我只添加了9个组件.它最终向我展示了3x3网格中的这9个组件,而不是3x4网格(第三行只有一个组件(和两个空白)).
假设我有一个Java应用程序,它有多个组件,您可以在其中输入文本.现在假设此应用程序还有一个对话框,允许您将单个字符(如从"编辑"菜单中选择"插入"时出现的Word中的对话框)插入到这些组件中.您希望它将字符插入最后具有焦点的文本组件中.
但是你怎么知道哪个文本组件最后有焦点?
我可以手动跟踪这个,通过让每个文本组件在获得焦点时向应用程序报告,然后让应用程序将新角色插入到最后具有焦点的任何组件中.
但这必须是一个常见问题(考虑工具栏中的粘贴按钮 - 它如何知道将其粘贴到哪里?).是否已经内置了Swing中的内容,可以让您获得具有焦点的最后一个文本组件的句柄?或者我自己需要写这个?
我正在使用SAX解析MathML表达式(尽管它的MathML可能并不完全相关).输入字符串的示例是
<math xmlns='http://www.w3.org/1998/Math/MathML'>
<mrow>
<mo>λ</mo>
</mrow>
</math>
Run Code Online (Sandbox Code Playgroud)
为了让SAX解析器接受这个字符串,我稍微扩展一下:
<?xml version="1.0"?>
<!DOCTYPE doc_type [
<!ENTITY nbsp " ">
<!ENTITY amp "&">
]>
<body>
<math xmlns='http://www.w3.org/1998/Math/MathML'>
<mrow>
<mo>λ</mo>
<mrow>
</math>
</body>
Run Code Online (Sandbox Code Playgroud)
现在,当我在此运行SAX解析器时,我得到一个异常:
[Fatal Error] :5:86: The entity "lambda" was referenced, but not declared.
org.xml.sax.SAXParseException: The entity "lambda" was referenced, but not
declared.
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
Run Code Online (Sandbox Code Playgroud)
但是,我知道如何解决这个问题.我只是将这一行添加到正在解析的字符串中:
<!ENTITY lambda "Λ">
Run Code Online (Sandbox Code Playgroud)
这给了我
<?xml version="1.0"?>
<!DOCTYPE doc_type [
<!ENTITY nbsp " ">
<!ENTITY amp "&">
<!ENTITY lambda "Λ">
]>
<body>
<math xmlns='http://www.w3.org/1998/Math/MathML'>
<mrow>
<mo>λ</mo>
<mrow>
</math>
</body> …Run Code Online (Sandbox Code Playgroud) 如何告诉XML解析器忽略被引用但未声明的实体?
我得到这样的例外:
org.xml.sax.SAXParseException:引用了实体"alpha",但未声明.
我想要的是解析器处理字符串"α" 作为一个简单的字符串,而不是一个字符实体.
此外,我有很多这些实体,所以我不能告诉解析器单独忽略它们.
我正在尝试用Java创建一个包含以下元素的XML文档:
<project xmlns="http://www.imsglobal.org/xsd/ims_qtiasiv1p2"
xmlns:acme="http://www.acme.com/schemas"
color="blue">
Run Code Online (Sandbox Code Playgroud)
我知道如何创建项目Node.我也知道如何使用颜色属性
element.setAttribute("color",
"blue")
我是否使用setAttribute()以相同的方式设置xmlns和xmlns:acme属性,或者我是否以某种特殊方式执行它,因为它们是命名空间属性?
我知道迭代一组大小为n的所有子集是一场性能噩梦,需要花费O(2 ^ n)时间.
如何迭代大小为k的所有子集(对于(0 <= k <= n))?这是一场表演噩梦吗?我知道有(n,k)= n!/ k!(n - k)!可能性.我知道如果k非常接近0或非常接近n,这是一个很小的数字.
在n和k方面,最糟糕的表现是什么?除了O(n!/ k!(n - k)!)之外,还有一种更简单的方式吗?这是渐近地小于O(n!)还是相同?
java ×6
swing ×3
sax ×2
xml ×2
concurrency ×1
document ×1
entities ×1
focus ×1
fonts ×1
future ×1
grid-layout ×1
mathml ×1
parsing ×1
performance ×1
r ×1
setattribute ×1
shiny ×1
text ×1
wait ×1