Moin,
Dies wird aufgrund des Backups mein wohl erster Post hier sein - Wie denn auch sei, ich habe eine kleine Frage:
Ich möchte in einer Swing Gui eine Uhr haben, soweit funktionierts auch, aber ich glaube ich habe das ganze nicht besonders klug programmiert und würde gerne diese Uhr in einen anderen Thread packen, damit ich im Hauptthread nicht an diese Schleife gebunden bin. Ich habe bereits viel gegoogelt und auch die Forensuche benutzt, aber nichts weiteres hierzu gefunden.
Mein funktionierender Code:
Main Klasse:
Frame Klasse:
So nun habe ich verschiedenes probiert aber nichts funktioniert ;(
Derzeitiger Threads Klassencode:
Naja, hier kann ich nicht auf Variablen und Objekte der anderen Klassen zugreifen, was auch mein eigentliches Problem darstellt, wie kann ich das doch? Falls das nicht geht, auch ok - Lass ich es halt in der Frame Schleife.
Falls diese Information relevant ist: Die Gui habe ich mit dem "Windows Builder Pro" von Google erstellt.
Ich hoffe auf baldige Hilfe,
Vailfire
Dies wird aufgrund des Backups mein wohl erster Post hier sein - Wie denn auch sei, ich habe eine kleine Frage:
Ich möchte in einer Swing Gui eine Uhr haben, soweit funktionierts auch, aber ich glaube ich habe das ganze nicht besonders klug programmiert und würde gerne diese Uhr in einen anderen Thread packen, damit ich im Hauptthread nicht an diese Schleife gebunden bin. Ich habe bereits viel gegoogelt und auch die Forensuche benutzt, aber nichts weiteres hierzu gefunden.
Mein funktionierender Code:
Main Klasse:
Java:
package de.vailfire.vtrainer;
import javax.swing.JFrame;
public class main {
/**
* @param args
*/
public static void main(String[] args) {
JFrame start = new Frame("Alpha 1.0.1");
}
}
Frame Klasse:
Java:
package de.vailfire.vtrainer;
import java.awt.BorderLayout;
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import java.awt.Color;
import javax.swing.JToolBar;
import javax.swing.BoxLayout;
import java.awt.CardLayout;
import javax.swing.SpringLayout;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import java.awt.FlowLayout;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import javax.swing.JLabel;
import java.awt.SystemColor;
import java.awt.Font;
import javax.swing.ImageIcon;
import javax.swing.SwingConstants;
import javax.swing.JTextPane;
import javax.swing.DropMode;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JTree;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import java.awt.Button;
import java.awt.Toolkit;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Frame extends JFrame {
public JPanel contentPane;
public Frame(String version) {
setIconImage(Toolkit.getDefaultToolkit().getImage(Frame.class.getResource("/de/vailfire/vtrainer/icon.png")));
setResizable(false);
setAlwaysOnTop(true);
setTitle("VTrainer");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 450, 300);
contentPane = new JPanel();
contentPane.setBackground(Color.WHITE);
contentPane.setBorder(new EmptyBorder(0, 0, 20, 0));
setContentPane(contentPane);
contentPane.setLayout(null);
JPanel panel = new JPanel();
panel.setBounds(-12, 0, 456, 20);
panel.setBackground(Color.BLACK);
contentPane.add(panel);
panel.setLayout(null);
SimpleDateFormat sdf_Hms = new SimpleDateFormat("HH:mm:ss");
SimpleDateFormat sdf_Hm = new SimpleDateFormat("HH:mm");
String uhrzeit = sdf_Hm.format(new Date());
JLabel lblTime = new JLabel(uhrzeit);
lblTime.setHorizontalAlignment(SwingConstants.RIGHT);
lblTime.setFont(new Font("Arial", Font.PLAIN, 11));
lblTime.setForeground(new Color(50, 178, 226));
lblTime.setBackground(Color.BLACK);
lblTime.setBounds(382, 0, 64, 20);
panel.add(lblTime);
JLabel lblBtnSettings = new JLabel();
lblBtnSettings.setHorizontalAlignment(SwingConstants.LEFT);
lblBtnSettings.setBounds(15, 0, 50, 20);
panel.add(lblBtnSettings);
lblBtnSettings.setIcon(new ImageIcon(Frame.class.getResource("/de/vailfire/vtrainer/settings.png")));
JLabel lbltPicTrophy = new JLabel();
lbltPicTrophy.setHorizontalAlignment(SwingConstants.LEFT);
lbltPicTrophy.setBounds(61, 2, 30, 16);
panel.add(lbltPicTrophy);
lbltPicTrophy.setIcon(new ImageIcon(Frame.class.getResource("/de/vailfire/vtrainer/trophy.png")));
JLabel lblScore = new JLabel("85695");
lblScore.setFont(new Font("Arial", Font.PLAIN, 11));
lblScore.setForeground(new Color(50, 178, 226));
lblScore.setBounds(80, 0, 115, 20);
panel.add(lblScore);
JTextPane OpeningText = new JTextPane();
OpeningText.setEditable(false);
OpeningText.setFont(new Font("Arial", Font.PLAIN, 11));
OpeningText.setText("zensiert");
OpeningText.setHighlighter(null);
OpeningText.setBounds(10, 31, 424, 125);
contentPane.add(OpeningText);
JLabel lblVersion = new JLabel(version);
lblVersion.setFont(new Font("Arial", Font.PLAIN, 11));
lblVersion.setHorizontalAlignment(SwingConstants.RIGHT);
lblVersion.setBounds(355, 255, 75, 15);
contentPane.add(lblVersion);
JLabel lblBtnEinüben = new JLabel("Einüben");
lblBtnEinüben.setIcon(new ImageIcon(Frame.class.getResource("/de/vailfire/vtrainer/üben.png")));
lblBtnEinüben.setBackground(Color.YELLOW);
lblBtnEinüben.setBounds(10, 160, 150, 35);
contentPane.add(lblBtnEinüben);
JLabel lblBtnAbfrage = new JLabel("Abfrage");
lblBtnAbfrage.setIcon(new ImageIcon(Frame.class.getResource("/de/vailfire/vtrainer/abfrage.png")));
lblBtnAbfrage.setBounds(10, 205, 150, 35);
contentPane.add(lblBtnAbfrage);
setVisible(true);
while(true) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
uhrzeit = sdf_Hms.format(new Date());
System.out.println("whiled: "+uhrzeit);
uhrzeit = sdf_Hm.format(new Date());
lblTime.setText(uhrzeit);
}
}
}
So nun habe ich verschiedenes probiert aber nichts funktioniert ;(
Derzeitiger Threads Klassencode:
Java:
package de.vailfire.vtrainer;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Threads implements Runnable{
@Override
public void run() {
while(true){
System.out.println("Threaded");
// try {
// Thread.sleep(1000);
// } catch (InterruptedException e) {
// e.printStackTrace();
// }
uhrzeit = sdf_Hms.format(new Date());
System.out.println("whiled: "+uhrzeit);
uhrzeit = sdf_Hm.format(new Date());
}
}
}
Falls diese Information relevant ist: Die Gui habe ich mit dem "Windows Builder Pro" von Google erstellt.
Ich hoffe auf baldige Hilfe,
Vailfire
Zuletzt bearbeitet: