Hallo!
Habe ein Problem mit dem Schreiben in die TextArea.
Meine Klasse heisst ProgressBar. Darin habe ich den ganzen Code vom GUI. Nun habe ich darin eine innere Klasse Transfer() und möchte daraus jeweils Textausgaben auf taskOutput machen. Das müsste doch eigentlich möglich sein, oder? Aber ich bin bisweilen mit meinen Versuchen gescheitert. Die Variable taskOutput ist mal public, soweit bin ich schon gekommen. Aber wenn mit dem Start-Button der download gestartet wird, soll ein Text in taskOutput geschrieben werden und das passiert nicht. Vielleicht liegt es auch daran, dass ich gewisse Teile aus einem Beispiel übernommen habe und nicht alles so genau verstanden habe. Zum Beispiel die Sache mit dem SwinWorker - wozu ist das?
Habe ein Problem mit dem Schreiben in die TextArea.
Meine Klasse heisst ProgressBar. Darin habe ich den ganzen Code vom GUI. Nun habe ich darin eine innere Klasse Transfer() und möchte daraus jeweils Textausgaben auf taskOutput machen. Das müsste doch eigentlich möglich sein, oder? Aber ich bin bisweilen mit meinen Versuchen gescheitert. Die Variable taskOutput ist mal public, soweit bin ich schon gekommen. Aber wenn mit dem Start-Button der download gestartet wird, soll ein Text in taskOutput geschrieben werden und das passiert nicht. Vielleicht liegt es auch daran, dass ich gewisse Teile aus einem Beispiel übernommen habe und nicht alles so genau verstanden habe. Zum Beispiel die Sache mit dem SwinWorker - wozu ist das?
Code:
import java.io.*;
import javax.comm.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.lang.*;
import javax.swing.*;
import java.beans.*;
import java.util.Random;
class ProgressBar extends JPanel implements ActionListener, PropertyChangeListener{
private JProgressBar progressBar;
private JButton startButton;
private JButton stopButton;
public JTextArea taskOutput;
private Task task;
public ProgressBar() {
super(new BorderLayout());
startButton = new JButton("Start");
startButton.setActionCommand("start");
startButton.addActionListener(this);
startButton.setToolTipText("Startet den Download");
stopButton = new JButton("Stop");
stopButton.setActionCommand("stop");
stopButton.addActionListener(this);
stopButton.setToolTipText("Stoppt den Download");
progressBar = new JProgressBar();
progressBar.setStringPainted(true);
taskOutput = new JTextArea(10, 100);
taskOutput.setMargin(new Insets(5,5,5,5));
taskOutput.setEditable(false);
JPanel panel = new JPanel();
panel.add(startButton);
panel.add(stopButton);
panel.add(progressBar);
add(panel, BorderLayout.PAGE_START);
add(new JScrollPane(taskOutput), BorderLayout.CENTER);
setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
}
public void actionPerformed(ActionEvent evt) {
String cmd;
cmd = evt.getActionCommand();
System.out.println("Kommando" +cmd);
if(cmd.equalsIgnoreCase("start")){
progressBar.setString("DOWNLOADING DDS");
taskOutput.append("\n"+"Download der Daten in Arbeit");
taskOutput.append("\n");
task = new Task();
task.addPropertyChangeListener(this);
task.execute();
Transfer transfer = new Transfer();
transfer.download();
}
else if(cmd.equalsIgnoreCase("stop")){
try{
progressBar.setIndeterminate(false);
progressBar.setValue(0);
progressBar.setStringPainted(false);
taskOutput.append("\n" + "Download wurde gestoppt");
}
catch(Exception e){}
}
}
public void propertyChange(PropertyChangeEvent evt) {
//if (!done) {
int progress = task.getProgress();
if (progress == 0) {
progressBar.setIndeterminate(true);
}
}
/**
* Create the GUI and show it. As with all GUI code, this must run
* on the event-dispatching thread.
*/
public void createAndShowGUI() {
//Create and set up the window.
JFrame frame = new JFrame("Download DDS");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//Create and set up the content pane.
JComponent newContentPane = new ProgressBar();
newContentPane.setOpaque(true); //content panes must be opaque
frame.setContentPane(newContentPane);
//Display the window.
frame.pack();
frame.setVisible(true);
}
}
//class Task extends SwingWorker<Void, Void> {
class Task extends SwingWorker{
public Void doInBackground() {
return null;
}
}
class ProgressBarThread extends Thread{
public void run(){
}
}
public class Transfer extends ProgressBar{
public Transfer(){
}
public void download(){
taskOutput.append("blabla");
}
}