相关疑难解决方法(0)

可以在main之外的类中使用进度条吗?

现在,我的主要是用10行调用一个gui.根据这些行中有多少行有文本,调用9个类中的1个(两行必须有文本).被调用的类执行计算,我希望将进度条绑定到.以下是其中一个被调用类的示例(每个类都相似,但足够不同以保证新类.)我认为问题违反了EDT规则,但我在其上看到的所有示例都涉及到论点.运行代码时会出现框架,但在完成所有计算之前,进度条不会更新.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class twoLoan extends JFrame {

    static JFrame progressFrame;
    static JProgressBar progressBar;
    static Container pane;
    double amountSaved = 0;
    int i = 0;

    public void runCalcs(Double MP, Double StepAmt,
        Double L1, Double L2, Double C1, Double C2,
        Double IM1, Double IM2, Double M1Start, Double M2Start) {

        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (Exception e) {
        }

        int iterations = (int) (MP - (M1Start * M2Start));

        //Create all components
        progressFrame = new JFrame("Calculation Progress");
        progressFrame.setSize(300, …
Run Code Online (Sandbox Code Playgroud)

java swing swingworker jprogressbar

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

Swing - 更新标签

我有一个消息标签和一个提交按钮.将多次按下提交按钮,每次按下的操作最多可能需要一分钟.

按下按钮时,我想将消息设置为空,在任务完成后,我想将消息设置为"完成".

private void submitActionPerformed(java.awt.event.ActionEvent evt) {
   message = "";
   updateMessageLabel();

   doTheTask();

   /* this update is apply to the label after completion */
   message = "Complete";
}
Run Code Online (Sandbox Code Playgroud)

是否可以在submitActionPerformed()方法运行之前(或在方法中)更新该消息标签,但是在单击按钮之后?

java concurrency swing event-dispatch-thread

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

Java HTMLDocument(insertAfterEnd,insertAfterStart,insertBeforeEnd,insertBeforeStart)无法正常工作?

我有一个JEditorPane显示以编程方式生成的HTML(在运行时).到目前为止,当我添加"行"时,我在字符串缓冲区中重新创建整个HTML文本,然后将其传递给JEditorPane.setText方法.

现在创建的HTML变得非常大(可以达到几MB),我只想在最后添加我的新行,而不是重新生成所有HTML文本.

我试图在最后追加的原因是为了避免Swing(或套件?)必须再次渲染/解析整个文本.因为即使HTML生成不是在EDT中执行,而是在另一个swingworker线程中执行,"渲染"也需要很长时间.或者最好的是有一个显示渲染进度的进度条,这是不可能的(是吗?).

所以我的想法是简单地追加到最后,但如果你有更好的想法,欢迎!

由于我的文本是在HTML表格中格式化的,我想在此表的末尾附加我的新文本.为此,我尝试使用它insertBeforeEnd,HTMLDocument但即使我尝试了大量的解决方案,我也无法使它工作.请注意,我只有"table"标签.

这是我的代码的一部分

JEditorPane jep = new JEditorPane();
HTMLEditorKit kit = new HTMLEditorKit();
HTMLDocument doc = new HTMLDocument();

jep.setEditorKit(kit);
jep.setDocument(doc);

//setting dummy text within a HTML table
jep.setText("<table><tr><td>A line of text</td></tr><tr><td>Another line of text</td></tr></table>");
Run Code Online (Sandbox Code Playgroud)

现在在这个表的末尾添加一些文本

//getting the Table Element
Element e = doc.getElement(doc.getDefaultRootElement(), StyleConstants.NameAttribute, HTML.Tag.TABLE);
Run Code Online (Sandbox Code Playgroud)

请注意,该元素似乎正确找到System.out.println(e.getName())"表"

现在

//inserting text at the end of the table
try {
        doc.insertBeforeEnd(e, "<tr><td>A New Line</td></tr>");
    } catch (BadLocationException ex) {
        System.out.println(ex); …
Run Code Online (Sandbox Code Playgroud)

java swing dom jtextpane jeditorpane

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