【发布时间】:2017-01-03 09:46:47
【问题描述】:
您好,我在将 JtextArea 与 JProgressBar 结合时遇到了一些问题。 JtextArea 正在显示批处理运行脚本的控制台。这是我的代码:-
private void initialize() {
frmPdfPublisher = new JFrame();
frmPdfPublisher.setIconImage(new ImageIcon("C:\\Users\\Admin\\Desktop\\imageedit_1_6449501097.png").getImage());
frmPdfPublisher.setTitle("PDF Publisher");
frmPdfPublisher.setBounds(100, 100, 483, 540);
frmPdfPublisher.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmPdfPublisher.getContentPane().setLayout(null);
TextArea textArea = new TextArea();
textArea.setBounds(10, 280, 447, 146);
frmPdfPublisher.getContentPane().add(textArea);
textArea.setEditable(false);
ScrollPane scrollPane = new ScrollPane();
scrollPane.setBounds(10, 280, 447, 146);
frmPdfPublisher.getContentPane().add(scrollPane);
JProgressBar progressBar = new JProgressBar();
progressBar.setBounds(10, 254, 447, 14);
frmPdfPublisher.getContentPane().add(progressBar);
progressBar.setVisible(true);
JButton btnTransform = new JButton("Transform");
btnTransform.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
String cmds[] = {"C:\\Users/Admin/Desktop/test1.bat"};
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(cmds);
process.getOutputStream().close();
java.io.InputStream inputStream = process.getInputStream() ;
InputStreamReader inputstreamreader = new InputStreamReader(inputStream);
BufferedReader bufferedrReader = new BufferedReader(inputstreamreader);
String strLine = "";
while ((strLine = bufferedrReader.readLine()) != null) {
System.out.println(strLine);
String newline = "\n";
textArea.append(strLine+newline);
textArea.setCaretPosition(textArea.SCROLLBARS_VERTICAL_ONLY);
progressBar.setString(strLine);
}
} catch (IOException IoException) {
IoException.printStackTrace();
}
}
});
我也想在 JprogressBar 中显示正在运行的脚本。 我正在使用 Eclipse Neon.2
编辑:-
我添加了几个步骤,但它没有显示完美的加载,并且在控制台停止后立即完成。
这是编辑后的代码:-
JButton btnTransform = new JButton("Transform");
btnTransform.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
String cmds[] = {"C:\\Users/Admin/Desktop/test1.bat"};
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(cmds);
process.getOutputStream().close();
java.io.InputStream inputStream = process.getInputStream() ;
InputStreamReader inputstreamreader = new InputStreamReader(inputStream);
BufferedReader bufferedrReader = new BufferedReader(inputstreamreader);
String strLine = "";
int n=progressBar.getValue();
if(n<100){
n++;
progressBar.setValue(100);
}
else{
timer.cancel();
}
while ((strLine = bufferedrReader.readLine()) != null) {
System.out.println(strLine);
String newline = "\n";
textArea.append(strLine+newline);
textArea.setCaretPosition(textArea.SCROLLBARS_VERTICAL_ONLY);
progressBar.setStringPainted(true);
progressBar.dispatchEvent(e);
progressBar.getValue();
progressBar.updateUI();
}
} catch (IOException IoException) {
IoException.printStackTrace();
}
}
请纠正我,我错过了什么?
【问题讨论】:
-
当你有你想要的东西时,记得接受一个答案。
标签: java eclipse swing windowbuilder jprogressbar