小编Pau*_*ers的帖子

使用指定的字体将String插入Document

我知道我可以在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中.)

java fonts swing document

5
推荐指数
1
解决办法
4496
查看次数

R Shiny:对不同的输出控件重复使用冗长的计算

我在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更改时调用它三次,并且在更新所有三个文本输出控件时只调用一次?

r shiny

5
推荐指数
1
解决办法
308
查看次数

等待线程

我有一个包含以下(Java)代码的方法:

doSomeThings();
doSomeOtherThings();
Run Code Online (Sandbox Code Playgroud)

doSomeThings()创建一些线程,每个线程只运行一段有限的时间.问题是我不希望在完成doSomeOtherThings()所有启动的线程之前被调用doSomeThings().(doSomeThings()还会调用可能启动新线程的方法等等.我不想在doSomeOtherThings()所有这些线程完成之前执行.)

这是因为doSomeThings(),除其他事项外将设置myObjectnull,而doSomeOtherThings()电话myObject.myMethod(),我不希望myObjectnull在那个时候.

是否有一些标准的方法来做这种事情(在Java中)?

java multithreading wait

4
推荐指数
2
解决办法
488
查看次数

java.util.concurrent.Future.get()没有返回

我有以下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()永远不会返回.

但是,如果我将调用替换submitexecute这样的调用:

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()继续完成,并且由于复杂的原因我不会进入这里,我需要在一个单独的线程上启动它.如果有另一种方法可以做到这一点,那就没问题了.

java concurrency multithreading future executorservice

4
推荐指数
2
解决办法
2万
查看次数

GridLayout和行数和列数

如果你没有完全填充它,GridLayout是否不会遵守你指定的行数和列数?

我正在创建一个包含3行和4列的GridLayout.但是,我只添加了9个组件.它最终向我展示了3x3网格中的这9个组件,而不是3x4网格(第三行只有一个组件(和两个空白)).

java swing grid-layout

4
推荐指数
2
解决办法
3万
查看次数

什么文本输入组件最后有焦点?

假设我有一个Java应用程序,它有多个组件,您可以在其中输入文本.现在假设此应用程序还有一个对话框,允许您将单个字符(如从"编辑"菜单中选择"插入"时出现的Word中的对话框)插入到这些组件中.您希望它将字符插入最后具有焦点的文本组件中.

但是你怎么知道哪个文本组件最后有焦点?

我可以手动跟踪这个,通过让每个文本组件在获得焦点时向应用程序报告,然后让应用程序将新角色插入到最后具有焦点的任何组件中.

但这必须是一个常见问题(考虑工具栏中的粘贴按钮 - 它如何知道将其粘贴到哪里?).是否已经内置了Swing中的内容,可以让您获得具有焦点的最后一个文本组件的句柄?或者我自己需要写这个?

java swing text focus

4
推荐指数
1
解决办法
2366
查看次数

使用SAX进行解析并处理字符实体

我正在使用SAX解析MathML表达式(尽管它的MathML可能并不完全相关).输入字符串的示例是

<math xmlns='http://www.w3.org/1998/Math/MathML'>
     <mrow>
          <mo>&lambda;</mo>
     </mrow>
</math>
Run Code Online (Sandbox Code Playgroud)

为了让SAX解析器接受这个字符串,我稍微扩展一下:

<?xml version="1.0"?>
     <!DOCTYPE doc_type [
          <!ENTITY nbsp "&#160;">
          <!ENTITY amp "&#38;">
]>
<body>
     <math xmlns='http://www.w3.org/1998/Math/MathML'>
          <mrow>
               <mo>&lambda;</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 "&#923;">
Run Code Online (Sandbox Code Playgroud)

这给了我

<?xml version="1.0"?>
     <!DOCTYPE doc_type [
          <!ENTITY nbsp "&#160;">
          <!ENTITY amp "&#38;">
          <!ENTITY lambda "&#923;">
]>
<body>
     <math xmlns='http://www.w3.org/1998/Math/MathML'>
          <mrow>
               <mo>&lambda;</mo>
          <mrow>
     </math>
</body> …
Run Code Online (Sandbox Code Playgroud)

parsing sax mathml character-entities

4
推荐指数
1
解决办法
3380
查看次数

如何告诉XML解析器忽略丢失的实体

如何告诉XML解析器忽略被引用但未声明的实体?

我得到这样的例外:

org.xml.sax.SAXParseException:引用了实体"alpha",但未声明.

我想要的是解析器处理字符串"α" 作为一个简单的字符串,而不是一个字符实体.

此外,我有很多这些实体,所以我不能告诉解析器单独忽略它们.

xml entities sax

4
推荐指数
1
解决办法
1187
查看次数

在元素上设置命名空间属性

我正在尝试用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属性,或者我是否以某种特殊方式执行它,因为它们是命名空间属性?

java xml setattribute xml-namespaces

4
推荐指数
1
解决办法
2万
查看次数

迭代给定大小的所有子集

我知道迭代一组大小为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!)还是相同?

performance combinatorics

4
推荐指数
1
解决办法
1862
查看次数