gpt4 book ai didi

java - JLabel在打开文件时是透明的

转载 作者:行者123 更新时间:2023-12-01 11:22:56 25 4
gpt4 key购买 nike


我编写了一个打开和解析文件的工具。由于这需要一些时间,我想制作一个小状态窗口,现在它仅由一个 JLable 和文本“导入正在运行,请稍候...”组成。
然而,在运行时它看起来像这样:
Transparent JLabel


文件导入完成后,窗口正常,显示文本和所有内容。我一开始尝试在没有线程的情况下对其进行编程,然后我想也许将其设为多线程会有所帮助。所以我让窗口在它自己的线程中打开,文件在它自己的线程中导入,最后都在它们自己的线程中。结果还是一样。这是我正在使用的代码:

JLabel label = new JLabel("Importing file, please wait...");
JFrame frame = new JFrame();
frame.setSize(100, 100);
frame.add((new JPanel()).add(label));
//no difference to frame.add(label);
frame.setVisible(true);
//Parse File
openParseFile();
//Close status window after parsing complete
frame.dispose();

有人知道如何解决这个问题吗?我尝试用谷歌搜索它,但结果只显示如何使 JLapel 透明,而不是相反。

感谢任何帮助,
谢谢
斯韦雷

最佳答案

这里是解决方案,感谢 MadProgrammer 的评论和本教程:Javacreed SwingWorker Examle

JLabel label = new JLabel("Importing file, please wait...");
status = new JFrame();
status.setLayout(new GridBagLayout());
status.setSize(100, 100);
status.add((new JPanel()).add(label));
status.setVisible(true);
SwingWorker sw = new SwingWorker() {

@Override
protected Object doInBackground() throws Exception {

openTableReader();


return null;
}

};
sw.addPropertyChangeListener(new PropertyChangeListener() {

@Override
public void propertyChange(PropertyChangeEvent event) {
if (event.getPropertyName().equals("state") && ((StateValue)event.getNewValue()).equals(StateValue.DONE)) {
processResult();
status.dispose();
}
}

}) ;
sw.execute();

关于java - JLabel在打开文件时是透明的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31043245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com