J
Java-Freak
Hallo,
ich versuche folgendes umzusetzten und hab über die Suche nichts vergleichbares gefunden:
-----------------------------------------------------------------------------------------------
- Einen JDialog zu erzeugen.
- darin sollen sich zwei Bereiche befinden
- oberer Bereich North - ist Panel 1, erstmals leer da kommt irgend ein Text mal rein
- unterer Bereich South - ist zuerst eine scrollPane, darin befindet sich Panel 2
- innerhalb Panel 2 möchte ich ein jLabel ausgeben
- nach einer Sekunde Zeitverzögerung dann ein weiteres jLabel
- nach einer weiteren Sekunde Zeitverzögerung dann ein weiteres jLabel
- ganz zum Schluß soll dann noch ein weiter Buttton folgen (noch nicht integriert im untenstehendem Code)
-----------------------------------------------------------------------------------------------
Habe unterschiedliche Ansätze probiert und diverse Versuche scheiterten. Bin mir nicht sicher, ob das in einem JDialog überhaupt funktioniert.
Aktuell und untenstehend habe ich im Konstruktoraufruf eine weitere Methode animierteAusgabe() eingefügt. Jetzt wartet er bei der Ausgabe (zeichnen) des jDialog die kompletten Zeitverzögerung ab ( zwei mal den sleep(1000) ) und gibt danach den JDialog komplett fertiggestellt auf dem Bildschirm aus.
Irgendwie ist es ja verständlich, das er erst nach kompletter Abarbeitung des Konstruktors den jDialog zeichnet und da gehört eben auch die zeitverzögerte Ausgabe dazu, ich weiß aber nicht, wie ich es anders integrieren oder umsetzen kann?
Ich bin für alle Anregungen, Versuche oder funktionstüchtige Lösungen dankbar!!
ich versuche folgendes umzusetzten und hab über die Suche nichts vergleichbares gefunden:
-----------------------------------------------------------------------------------------------
- Einen JDialog zu erzeugen.
- darin sollen sich zwei Bereiche befinden
- oberer Bereich North - ist Panel 1, erstmals leer da kommt irgend ein Text mal rein
- unterer Bereich South - ist zuerst eine scrollPane, darin befindet sich Panel 2
- innerhalb Panel 2 möchte ich ein jLabel ausgeben
- nach einer Sekunde Zeitverzögerung dann ein weiteres jLabel
- nach einer weiteren Sekunde Zeitverzögerung dann ein weiteres jLabel
- ganz zum Schluß soll dann noch ein weiter Buttton folgen (noch nicht integriert im untenstehendem Code)
-----------------------------------------------------------------------------------------------
Habe unterschiedliche Ansätze probiert und diverse Versuche scheiterten. Bin mir nicht sicher, ob das in einem JDialog überhaupt funktioniert.
Aktuell und untenstehend habe ich im Konstruktoraufruf eine weitere Methode animierteAusgabe() eingefügt. Jetzt wartet er bei der Ausgabe (zeichnen) des jDialog die kompletten Zeitverzögerung ab ( zwei mal den sleep(1000) ) und gibt danach den JDialog komplett fertiggestellt auf dem Bildschirm aus.
Irgendwie ist es ja verständlich, das er erst nach kompletter Abarbeitung des Konstruktors den jDialog zeichnet und da gehört eben auch die zeitverzögerte Ausgabe dazu, ich weiß aber nicht, wie ich es anders integrieren oder umsetzen kann?
Ich bin für alle Anregungen, Versuche oder funktionstüchtige Lösungen dankbar!!
Code:
import javax.swing.JLabel;
public class beispiel extends javax.swing.JDialog {
private javax.swing.JPanel jPanel1 = new javax.swing.JPanel();
private javax.swing.JScrollPane jScrollPane1 = new javax.swing.JScrollPane();
private javax.swing.JPanel jPanel2 = new javax.swing.JPanel();
private javax.swing.JLabel jLabelText1 = new javax.swing.JLabel();
private javax.swing.JLabel jLabelText2 = new javax.swing.JLabel();
private javax.swing.JLabel jLabelText3 = new javax.swing.JLabel();
public beispiel(java.awt.Frame parent, boolean modal) {
super(parent, modal);
initComponents();
this.setSize(500, 300);
// Aufruf einer externen Methode für die "animation"
// dabei wird das Panel 2 neu gezeichnet
animierteAusgabe();
}
private void initComponents() {
setDefaultCloseOperation (javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
jPanel1.setLayout(null);
jPanel1.setBackground(new java.awt.Color(255, 255, 255));
jPanel1.setMinimumSize(new java.awt.Dimension(500, 100));
jPanel1.setPreferredSize(new java.awt.Dimension(500, 100));
getContentPane().add(jPanel1, java.awt.BorderLayout.NORTH);
jPanel2.setLayout(new javax.swing.BoxLayout(jPanel2,javax.swing.BoxLayout.Y_AXIS));
jPanel2.setMinimumSize(new java.awt.Dimension(500, 300));
jPanel2.setPreferredSize(new java.awt.Dimension(500, 300));
jScrollPane1.setViewportView(jPanel2);
getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);
pack();
}
private void animierteAusgabe(){
// interner Aufruf der "zeitverzögerten Ausgabe"
jLabelText1.setText("Startzeile hier");
jPanel2.add(jLabelText1);
jPanel2.repaint();
try {Thread.sleep(1000);}
catch (Exception e) {
}
jLabelText2.setText("Zweite Zeile: Ausgabe ist Zeitverzögert");
jPanel2.add(jLabelText2);
jPanel2.repaint();
try {Thread.sleep(1000);}
catch (Exception e) {
}
jLabelText3.setText("Dritte Zeile: Jetzt ist Schluß");
jPanel2.add(jLabelText3);
jPanel2.repaint();
// Zeitverzögerung Ende
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() { new beispiel(new javax.swing.JFrame(), true).setVisible(true); }
});
}
}
Zuletzt bearbeitet von einem Moderator: