小编Kar*_*120的帖子

JTextArea中的行

有没有一种可靠的方法来计算字符串在JTextArea中如何划分成行?

我有一个固定宽度的JTextArea,当它被填充时,会添加一个新行并且它会垂直展开.

现在,我需要准确知道哪一行是哪一行.我可以使用字体指标添加单个字符宽度,但我不知道这是否可靠,或者是否有更好的方法.

字体指标"技巧"是唯一的方法吗?

java swing row jtextarea

3
推荐指数
1
解决办法
775
查看次数

EDT队列切割

有这篇文章:


有人跳了队!偶尔看来,一些挥杆事件在事件队列中以不正确的顺序处理(并且当有人切入队列时没有任何东西让我的血液沸腾)导致奇怪的行为.最好用小代码片段来说明这一点.阅读下面的代码段,仔细考虑您想象的事件发生的顺序.

button.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent arg0) {
         repaint();
         doSomething();
    }
});
Run Code Online (Sandbox Code Playgroud)

大多数开发人员都认为repaint()方法将导致在doSomething()方法调用之前进行绘制操作.但事实并非如此,对repaint()的调用将创建一个新的绘制事件,该事件将添加到事件队列的末尾.只有当前的Action Event完成后才会处理(调度)此新的paint事件.这意味着将在调度队列上的新Paint Event之前执行doSomething()方法.

这里的关键点是调用repaint()将创建一个新的绘制事件,该事件将被添加到结束事件队列中而不会立即处理.这意味着没有事件跳过队列(我的血液可以保持在正确的温度).

(资源)


我的问题是,我怎么能强迫的Swing做repaint();之前doSomething();

此外,如果有方法调用repaint()WITHIN,doSomething();它们将仅在doSomething();完成后执行.有没有办法可以暂停doSomething();中间执行,然后投入reapaint();,完成它,然后恢复doSomething();

到目前为止我找到的解决方案只有这个(链接),但它并不实用......

java swing multithreading event-dispatch-thread

3
推荐指数
1
解决办法
262
查看次数

是System.out.print(JPanel的);

core.EditArea[,119,96,556x931,invalid,layout=javax.swing.BoxLayout,alignmentX=0.0,alignmentY=0.0,border=,flags=9,maximumSize=,minimumSize=,preferredSize=]
Run Code Online (Sandbox Code Playgroud)

我打印出一个JPanel,上面是输出.谁能告诉我"无效"部分的含义是什么?

更好的是,如果有人知道在哪里找到尽可能多的东西的解释System.out.print(thingy)输出的列表?

java printing

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

java中的iText ListItem和List类

我想使用iText创建PDF.我想创建一个有序列表.但是,我想要将元素标记为:

a)
b)
c)
d)
etc...
Run Code Online (Sandbox Code Playgroud)

iText不支持这种标记,因为它有几个自己的预定义标记.有没有办法创建自己的标记(例如构建一个元素串并将其传递给正确的方法/构造函数),或者是篡改iText核心文件的唯一方法?

我打算使用它的列表最多只有5个元素,所以字母表的长度不是问题...

java list itext

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

JDialog不当行为

JDialog dialog = new JDialog(parent JFrame, "blabla");
dialog.setLayout(new BorderLayout());

JLabel label = new JLabel("more blabla");

dialog.getContentPane().add(label, BorderLayout.CENTER);

dialog.setSize(new Dimension(280, 80));
dialog.setLocationRelativeTo(parent JFrame);
dialog.setVisible(true);

//part of code that takes time to execute
//actually, I'm sending an email here, but it doesn't really matter what I do,
//as you will read below        

dialog.dispose();
Run Code Online (Sandbox Code Playgroud)

我有上面的代码,它的用途是在执行某些代码时向用户显示消息(代码执行大约需要5-10秒,我不希望用户认为程序冻结).

问题是,添加到对话框中的JLabel根本没有出现.无论我添加到对话框中,它都不会出现.

但是,如果我将JDialog设置为modal(将true添加为上述构造函数的最后一个参数),它会出现,但是我想要执行的代码在对话框关闭之前不会运行,从而违背了它的目的.

由于它在代码中的位置,将要执行的代码并不重要,我尝试将其保留在当前的上面 - 根本没有执行代码 - 对话框会显示为瞬间,但我可以看到它空了.

我知道我可以创建一个构造窗口并说"待机10秒,代码正在执行",但我不想这样做.

我也尝试将JDialog换成JFrame,文本仍然不会出现.

我错过了什么?

java concurrency swing jdialog event-dispatch-thread

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

添加一段代码到快捷方式

Eclipse中是否有办法将一段代码绑定到快捷方式?

我经常使用System.out.println()进行测试和其他事情,如果我不得不按ctrl +某事而不是每次都输入它会更容易.

java eclipse automation

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

iText PdfDictionary编码问题?

当我创建一个PDF文件时,我使用此代码附加一些信息,以使其对我的程序可读:

        PdfDictionary dictionary = new PdfDictionary();

        PdfObject object;
        PdfName index;

        ArrayList<String> content = getCompactData(document);

        for (int i = 0; i < content.size(); i++)
        {
            object = new PdfString(content.get(i));
            index =  new PdfName(Integer.toString(i+1));

            dictionary.put(index, object);
        }

        writer.getExtraCatalog().putAll(dictionary);
Run Code Online (Sandbox Code Playgroud)

当我打开程序时,我使用此代码来提取数据:

                PdfDictionary dictionary = reader.getCatalog();

                PdfName index;
                PdfObject line;

                ArrayList<String> data = new ArrayList<String>();

                for (int i = 1; i < dictionary.size()-2; i++)
                {
                    index = new PdfName(Integer.toString(i));
                    line = dictionary.getAsString(index);
                    data.add(line.toString());
                }
Run Code Online (Sandbox Code Playgroud)

除了一个小细节外,一切都很好.诸如čšđćž之类的人物由于某种原因没有正确地传递给过程.一旦我尝试提取数据,我的程序就会变得混乱,无法识别这些字母.

几点说明:

  1. 我的工作区编码是UTF-8
  2. 使用我的程序时,我可以毫无问题地输入这些字母,它们将正确显示.
  3. 我使用自定义的.ttf(truetype)字体,我知道它支持这些字符
  4. 我尝试在我提供的保存代码的最后一行之后打印目录的内容,所有内容都正确打印出来.
  5. 我也尝试在开放代码中的第一行之前打印出目录的内容,不显示字符.

所以我不知道哪里出错了.你呢?

java pdf itext character-encoding

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

VS2017 属性表排序

所以,我在VS2017有一个项目,VS2017最近收到了更新。然后,我将所有 wxWidgets 模块作为项目添加到我的初始解决方案中,并处理了构建顺序,因此它们以正确的顺序构建。

但是,我总是收到此错误:

C:\Programs\Visual Studio 2017\Common7\IDE\VC\VCTargets\Microsoft.Cpp.Common.props(144,5): warning
MSB4211: The property "WindowsTargetPlatformVersion" is being set to a value for the first time, but it was already consumed at
"C:\Programs\Visual Studio 2017\Common7\IDE\VC\VCTargets\Microsoft.Cpp.WindowsSDK.props (29,5)".
Run Code Online (Sandbox Code Playgroud)

我找到了这个线程和它链接的文章:link

但它没有告诉我如何修复它。据我所知,单个项目的属性没有按照应评估的顺序进行评估。

如何定义属性表排序?我到底需要改变什么?

也不是我不能更改项目文件或任何连接到 wxWidgets 的东西,因为它是我存储库中的一个子模块,并且所做的任何更改都无法保存到存储库中。

c++ wxwidgets propertysheet visual-studio-2017

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

将 vector&lt;std::unique_ptr&lt;A&gt;&gt; 转换为 vector&lt;A&gt;

有一个向量std::unique_ptr<A>。我需要将该数据传递给一个需要A.

我尝试使用std::transform,像这样:

std::vector<std::unique_ptr<A>> a;

std::vector<A> aDirect;
std::transform(a.begin(), a.end(),
    std::back_inserter(aDirect),
    [](std::unique_ptr<A> element)-> A { return *element; });
Run Code Online (Sandbox Code Playgroud)

但似乎在某个时候std::transform试图复制 的元素a,所以这不起作用,它在尝试引用已删除的函数时失败。

当然,我可以用 for 循环手动完成,但我想知道是否有更优雅的方法来做到这一点。

c++ vector std unique-ptr

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

Scala Singleton没有按预期工作

Main.scala:

package controler

object Main {
    def main(args: Array[String]) {
      import Utilites._
      isJavaUpToDate
    }
}
Run Code Online (Sandbox Code Playgroud)

Utilites.scala:

package controler

object Utilities {
  def isJavaUpToDate = { 
    val javaVersion = augmentString(System.getProperty("java.version").substring(2, 3))
    javaVersion >= 6 
  }
}
Run Code Online (Sandbox Code Playgroud)

为什么这不起作用?我已经进行了一系列不同的教程网站,这没有问题.

我总是说无法找到val Utilites.

PS为什么它只是在破坏代码时使用augmentString()来改变.toInt.

现在这给了我麻烦,一些关于隐式排序和方法orderTOOrdered.

singleton scala

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