GUI mit Threads aufbauen

Bitstubbi

Mitglied
Hallo liebes Forum 🙂

Ich habe eine Frage bezüglich GUI in Kombination mit Threads. Ich baue die GUI in einem Thread auf und das klappt auch sehr gut. Nur wenn ich das Programm jetzt starte funktioniert kein Mouse//KeyListener. aber ich kann ja die methoden schlecht in den Thread schreiben oder?... bitte verzweifelt um Hiiiillfe

Daaanke schon mal :toll:
 
dein Text läßt Wetten gegen Fehler bedenklich unattraktiv erscheinen,
aber für eine konkrete Antwort bietet er wenig,
du müsstest den Code posten..


(edit: verschoben)
 
Zuletzt bearbeitet von einem Moderator:
Ich würde mal sagen du bist im falschen Bereich gelandet. Poste mal deinen Code, danach wirst du mit Sicherheit einige Antworten bekommen. Bei der Oberflächenprogrammierung kann einiges schief gehen.
 
Hier der gewünschte Code:

mein run():

Java:
	public void run(){
		
		int id = cnt++ + 1;
		setTitle("PII - Uebung 01");
		setSize(400, 400);
		Color col = id == 1 ? new Color(79, 128, 188) : new Color(192, 80, 78);
		JTextPane text = new JTextPane();
		text.setEditable(false);
		JButton send = new JButton("send");
		send.setBackground(col);
		send.setForeground(Color.WHITE);
		JTextField input = new JTextField();
		JLabel label = new JLabel();
		label.setAlignmentX(Component.CENTER_ALIGNMENT);
		JLabel label_2 = new JLabel("Chat#" + id);
		label_2.setForeground(Color.WHITE);
		label_2.setAlignmentX(0.03f);
		JScrollPane scp = new JScrollPane(text);
		JPanel panel_1 = new JPanel();
		JPanel panel_2 = new JPanel();
		JPanel panel_3 = new JPanel();
		JPanel panel_4 = new JPanel();
		// -------------------------------------------------------------
		panel_1.setLayout(new BoxLayout(panel_1, BoxLayout.PAGE_AXIS));
		panel_1.add(scp);
		panel_1.add(Box.createRigidArea(new Dimension(0, 15)));
		panel_1.add(label);
		panel_1.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
		// -------------------------------------------------------------
		panel_2.setLayout(new BoxLayout(panel_2, BoxLayout.LINE_AXIS));
		panel_2.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
		panel_2.add(input);
		panel_2.add(Box.createRigidArea(new Dimension(10, 0)));
		panel_2.add(send);
		// -------------------------------------------------------------
		panel_4.setLayout(new BoxLayout(panel_4, BoxLayout.PAGE_AXIS));
		panel_4.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
		panel_4.add(label_2);
		panel_4.setBackground(col);
		// -------------------------------------------------------------
		panel_3.setLayout(new BorderLayout());
		panel_3.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
		panel_3.add(panel_4, BorderLayout.PAGE_START);
		panel_3.add(panel_1, BorderLayout.CENTER);
		panel_3.add(panel_2, BorderLayout.PAGE_END);
		panel_3.setBackground(col);
		// -------------------------------------------------------------
		add(panel_3);
		Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
		setLocation(dim.width / 2 - getWidth() * (id == 1 ? 1 : 0), dim.height
				/ 2 - getHeight() / 2);
		this.addWindowListener(this);
		setMinimumSize(new Dimension(200, 200));
		setVisible(true);
	}

die dazugehörigen listener:

Java:
public void keyPressed(KeyEvent arg0) {
		if (arg0.getKeyCode() == KeyEvent.VK_ENTER) {
			handleInput(arg0.getSource());
		}
	}


Das ganze soll mal ein Chat werden
 
und der Rest?
poste doch gleich vollständige Programme, dann kann man es leichter testen,
umfangreiche sonstige Logik-Anteile einfach streichen

ich sehe in deinem Code nirgendwo addMouseListener() oder addKeyListener(),
ohne das kann es zu keiner Eingabe-Verarbeitung kommen, vielleicht bereits der Fehler

ein Button ohne ActionListener macht auch nur wenig
 

Zurück
Oben