gpt4 book ai didi

Java 弹出窗口在执行 Kettle 期间卡住

转载 作者:行者123 更新时间:2023-11-30 03:45:16 30 4
gpt4 key购买 nike

我有一个奇怪的问题,我在java上做了一个小软件,它执行我在kettle中做的一些工作。现在,转换进展顺利,一切正常,但是当我执行转换时,我想在转换过程中显示一条消息

public Wait(){
setTitle("Aggiungi nuovo autore");
setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
Toolkit toolkit = Toolkit.getDefaultToolkit();
Dimension screen = toolkit.getScreenSize();
setBounds((screen.width/2)-150, (screen.height/2)-90, 300, 180);
setResizable(false);
setDefaultLookAndFeelDecorated(false);
setContentPane(new Inner());
setResizable(false);
setUndecorated(true);
setVisible(true);
}

public class Inner extends JPanel{
BufferedImage image;
public Inner(){
BoxLayout box = new BoxLayout(this,BoxLayout.PAGE_AXIS);
setLayout(box);
JTextPane text = new JTextPane();
text.setText("Attendere il completamento delle operazioni, potrebbe richiedere tempo");
text.setOpaque(false);
StyledDocument doc = text.getStyledDocument();
SimpleAttributeSet center = new SimpleAttributeSet();
StyleConstants.setAlignment(center, StyleConstants.ALIGN_CENTER);
doc.setParagraphAttributes(0, doc.getLength(), center, false);
ImageIcon icon = new ImageIcon("extra/loading.gif");
JLabel label = new JLabel (icon);
add(Box.createRigidArea(new Dimension(0,20)));
add(label);
add(Box.createRigidArea(new Dimension(0,20)));
add(text);
Border border = BorderFactory.createLineBorder(java.awt.Color.DARK_GRAY, 3);
setBorder(border);
}
}
}

我在 Controller 的这一部分运行它

public void actionPerformed(ActionEvent e){
aggiungi.setEnabled(false);
Wait wait = new Wait();
wait.toFront();
for (int i=0; i<model.effectivilyCount();i++){
int removed = 0;
int c = executeCommand(model.getValueAt(i, 0),model.getValueAt(i,1));
if (c==0) {
model.removeRow(removed);
model.fireTableDataChanged();
}
else if (c==1) ;//errore fatale da implementare
else if (c==2) ; //segna di rosso e lascia stare nella tabella
}
wait.dispose();
aggiungi.setEnabled(true);
}

现在,java打开新窗口(等待)并禁用主窗口(aggiungi),但它没有显示等待包含的内容:(。我能做什么?

PSexecuteCommand(String,String) 运行水壶转换

最佳答案

您遇到了线程问题,可能是由executeCommand 方法引起的。您在 Swing 事件线程上调用此函数,它占用了该线程,导致 GUI 无响应。最好将其放在后台线程中,例如由 SwingWorker 提供的线程。

此外,您似乎正在显示第二个窗口,该窗口可能是 JFrame。如果是这样,您可能最好显示模式对话框,因为模式部分将使您的主窗口处于非 Activity 状态,直到对话框不再可见。

关于Java 弹出窗口在执行 Kettle 期间卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25916628/

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