小编Ula*_*har的帖子

如何:JTable在第一列中具有可折叠JTree,在其他列中具有数据?

我在这一点上有点迷失:我尝试创建一个JTable,它能够在第一列中保存某种树(JTree?)数据结构,然后是基于其他列中的树节点的数据,如下所示图片:

在此输入图像描述

该图像显示了我的JTree的结构.红线表示我需要实现的表结构.树中的每个节点应该像该表中的单行一样进行treatet等等.我希望我能够清楚地了解到我想要实现的目标.

我试过像这里讨论的那样:JTable作为一个JTree节点,这里把JTable放在JTree中,但这不符合我的需要.我还从SwingX项目中了解了JXTreeTable,但似乎很难找到任何有用的例子.此类解决方案的许多链接似乎导致(不再存在)sun网站和/或重定向到oracle网站......

如果有人可以引导我走向正确的方向和/或提供一些如何做到这一点的正常代码(右),这将是非常棒的.

任何帮助,将不胜感激 ;).

java swing jtree jtreetable jxtreetable

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

使用JDK8时,LogManager.getLogger将应用程序停顿约10-30秒:

//更新1:

我做了一些测试,删除了大部分的lib并注释掉了lib特定的代码,导致了相同的行为,这让我得出结论,这个问题不是(直接)由这些lib引起的,但似乎是我的一般问题代码和/或设置.

这里的主要问题是我不明白为什么它在eclipse(即时启动,高性能等)中启动时运行完美,而同样的代码在我在eclipse之外启动它时会有所描述的问题(作为runnable JAR使用相同的JDK!).

有人可以了解可能存在的差异吗?

// END OF UPDATE 1

//原帖:

来自我在这里问到的一个较旧的问题:使用launch4j和jdk8包装.exe需要很长时间才能启动.使用jdk7开始几乎是即时的

现在我知道它与使用jdk8的launch4j无关,但它似乎是由我的应用程序中的jdk8组合的log4j引起的.这里讨论了类似的问题:创建logger时Log4j 2挂起,这里:log4j LogManager.getLogger陷入无限循环.

但是这些解决方案都不适合我.问题对我来说也有点不同.开始了:

我的应用程序的主要方法是在初始化Logger对象之前执行一些初始化操作(比如清理旧的日志文件等).打印每个步骤以通过System.out.println进行调试.这是一个简化的例子:

public class MyTestCase {
    private static Logger logger; 

    public static void main(String[] args) throws Exception {
        System.out.println("Executing MyTestCase...");

        doInitstuff1();

        doInitstuff2();

        System.out.println("Initializing Logger...");    

        logger = LogManager.getLogger(MyTestCase.class.getName()); 

        System.out.println("Init complete!");

        doTheRealStuff();
    }

    private void doInitstuff1() {
        System.out.println("Init Stuff 1...");
    }

    private void doInitstuff2() {
        System.out.println("Init Stuff 2...");
    }

    private void doTheRealStuff() {
        System.out.println("Launching GUI...");
    }
}
Run Code Online (Sandbox Code Playgroud)

当我从Eclipse中执行代码(调试或运行配置无关紧要)时,immedeate输出(开始和结束的<1秒)是预期的:

执行MyTestCase ...

Init Stuff …

java eclipse logging java-8 log4j2

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

是否可以/如何在JAR中嵌入和访问HTML文件?

我现在有点受阻:我写了一个非常复杂的Java桌面应用程序(没有Applet/Web App!),它有自己的"用户手册".本手册包含一些HTML和JPG文件.本手册使用JEditorPane显示在我的应用程序的"帮助菜单"中.

到现在为止还挺好.只要我使用Eclipse启动Programm,这种方法就可以正常工作.只要我将部署版本创建为可运行的jar(使用launch4j将其包装到.exe中),HTML"Viewer"就无法显示用户手册(图像丢失).

我明白为什么会发生这种情况,但我不知道如何解决/规避这个问题.

我的应用程序通过getClass().getResource()加载其资源(属性文件,图标等).例子:

this.setIconImage(new ImageIcon(getClass().getResource("/images/dialog-question.png")).getImage());

stream = new BufferedInputStream(MABIUpdater.class.getResourceAsStream("/settings.properties"));
Run Code Online (Sandbox Code Playgroud)

就像我之前说的那样,这确实很有效(从Eclipse OR中启动App作为包装的可执行文件或runnable-jar.

所以我试图像这样访问我的HTML"手册":

File manual = new File(getClass().getResource("/manual/help.html").toURI());

jEditorPane.setPage(manual.toURI().toURL());
Run Code Online (Sandbox Code Playgroud)

这不起作用.通过Eclipse启动程序我看到手册但缺少图像.通过jar/exe启动它我得到一个空框架.

那么如何实现这一目标还有什么"诀窍"呢?我猜一个问题是HTML页面本身,因为它无法访问该jar中的链接图像.这是一个非常小的HTML文件示例(无法使用图像):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html lang="de">
    <head>
        <title>Manual</title>
    </head>
    <body>
        <h1>Example: </h1>
        <p>fubar</p>
        <img style="display: block; text-align: center;" src="../manual/img/Shot01.png" width="666" height="644" border="0" alt="Bildtext">
        <p><a href=\"http://www.google.com/\">blablubb</a></p>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我希望我的问题很明确,有人有想法;).

编辑:所有必需的HTML文件和图像都在JAR文件/类路径中.(只是为了让这个更清楚)

html java swing jar jeditorpane

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

标签 统计

java ×3

swing ×2

eclipse ×1

html ×1

jar ×1

java-8 ×1

jeditorpane ×1

jtree ×1

jtreetable ×1

jxtreetable ×1

log4j2 ×1

logging ×1