Hallo leute,
ich mach grad ein Tutorial durch und stoße da auf ein Problem.
Ich erstelle folgendes:
so geht auch alles nur das ich in der textarea (hier timeline) kein Scrollbalken habe.
Diesen soll ich bekommen wenn ich folgende zeile wie folgt anpasse:
doch nun hängt sich mein Programm auf sobald ich was in die TextArea schreiben will.
was kann das denn sein?
Dankbar für jede hilfe.
Gruß Jörg
Hier mal der komplette Code der Klasse.
Also ich habs nun ein wenig eingekreist.
Das Programm hängt sich erst dann auf wenn ich eine zweite Zeile in die TextArea einfügen will.
evtl. hilft das ja.
ich mach grad ein Tutorial durch und stoße da auf ein Problem.
Ich erstelle folgendes:
Java:
public JPanel buildTimelinePanel() {
JPanel timelinePanel = new JPanel(new BorderLayout());
timeline.setBorder(BorderFactory.createTitledBorder("Timeline"));
// TextArea
timeline.setEditable(false);
timelinePanel.add(timeline, BorderLayout.CENTER);
// Button
JPanel timelineButtonPanel = new JPanel(new BorderLayout());
JButton timelineButton = new JButton("Tweets holen");
timelineButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("tweets werden geholt");
new TimelineWorker().execute();
}
});
timelineButtonPanel.add(timelineButton, BorderLayout.WEST);
timelinePanel.add(timelineButtonPanel, BorderLayout.SOUTH);
return timelinePanel;
}
so geht auch alles nur das ich in der textarea (hier timeline) kein Scrollbalken habe.
Diesen soll ich bekommen wenn ich folgende zeile wie folgt anpasse:
Java:
//timelinePanel.add(timeline, BorderLayout.CENTER);
timelinePanel.add(new JScrollPane(timeline), BorderLayout.CENTER);
doch nun hängt sich mein Programm auf sobald ich was in die TextArea schreiben will.
was kann das denn sein?
Dankbar für jede hilfe.
Gruß Jörg
Hier mal der komplette Code der Klasse.
Java:
import java.awt.BorderLayout;
import java.awt.ScrollPane;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;
import twitter4j.Status;
public class ZwietschiGUI {
private Zwietschi zwietschie = new Zwietschi();
private final JTextField statusText = new JTextField();
private final JTextArea timeline = new JTextArea();
private final JProgressBar progressBar = new JProgressBar();
class StatusWorker extends SwingWorker<Void, Void> {
@Override
protected Void doInBackground() throws Exception {
progressBar.setIndeterminate(true);
zwietschie.setStatus(statusText.getText());
return null;
}
@Override
protected void done() {
progressBar.setIndeterminate(false);
}
}
class TimelineWorker extends SwingWorker<Void, Void> {
@Override
protected Void doInBackground() throws Exception {
progressBar.setIndeterminate(true);
timeline.setText("");
List<Status> status = zwietschie.getTimeline();
for (Status st : status) {
timeline.append(st.getCreatedAt() + " "
+ st.getUser().getName() + ": " + st.getText() + "\n");
}
return null;
}
protected void done() {
progressBar.setIndeterminate(false);
}
}
public JPanel buildStatsPanel() {
// Panel, Text
JPanel statusPanel = new JPanel(new BorderLayout());
statusPanel.setBorder(BorderFactory.createTitledBorder("Status"));
statusPanel.add(statusText, BorderLayout.CENTER);
// Button
JButton statusButton = new JButton("Senden");
statusButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
System.out.println("Versenden wurde gedrückt");
new StatusWorker().execute();
}
});
JPanel statusButtonPanel = new JPanel(new BorderLayout());
statusButtonPanel.add(statusButton, BorderLayout.WEST);
statusPanel.add(statusButtonPanel, BorderLayout.SOUTH);
return statusPanel;
}
public JPanel buildTimelinePanel() {
JPanel timelinePanel = new JPanel(new BorderLayout());
timeline.setBorder(BorderFactory.createTitledBorder("Timeline"));
// TextArea
timeline.setEditable(false);
timelinePanel.add(new JScrollPane(timeline), BorderLayout.CENTER);
// Button
JPanel timelineButtonPanel = new JPanel(new BorderLayout());
JButton timelineButton = new JButton("Tweets holen");
timelineButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("tweets werden geholt");
new TimelineWorker().execute();
}
});
timelineButtonPanel.add(timelineButton, BorderLayout.WEST);
timelinePanel.add(timelineButtonPanel, BorderLayout.SOUTH);
return timelinePanel;
}
public JPanel buildProgressPanel() {
JPanel progresspanel = new JPanel();
progresspanel.setBorder(BorderFactory.createTitledBorder("Aktivität"));
progresspanel.add(progressBar);
return progresspanel;
}
public JFrame createFrame() throws Exception {
JFrame frame = new JFrame();
frame.setSize(400, 400);
frame.setLocation(500, 500);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(buildStatsPanel(), BorderLayout.NORTH);
frame.add(buildTimelinePanel(), BorderLayout.CENTER);
frame.add(buildProgressPanel(), BorderLayout.SOUTH);
//
zwietschie.login();
//
return frame;
}
/**
* @param args
*/
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
ZwietschiGUI gui = new ZwietschiGUI();
JFrame main;
try {
main = gui.createFrame();
main.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
Also ich habs nun ein wenig eingekreist.
Das Programm hängt sich erst dann auf wenn ich eine zweite Zeile in die TextArea einfügen will.
evtl. hilft das ja.
Zuletzt bearbeitet: