powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Swing Форма в отдельном потоке
3 сообщений из 3, страница 1 из 1
Swing Форма в отдельном потоке
    #38491637
Hacktivist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пытаюсь сделать что-то типа чата. Закинул создание формы в отдельный поток, но она у меня не прорисовывается, только открывается пустое окошко и все :/

Класс Connector:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
public void Run (){
		try {
			InetAddress addr;
			addr = InetAddress.getByName(IP);
			socket = new Socket(addr, PORT);
			ThreadScanner TS = new ThreadScanner(socket);
			Thread Scanner = new Thread(TS);
			Scanner.start();
			
			Chat_Form CF = new Chat_Form();
			Thread Form = new Thread(CF);
			Form.start();
			
			final ObjectOutputStream outStream = new ObjectOutputStream(socket.getOutputStream());
				outStream.writeObject(new Message(this.nick,"/**/New_User/**/"));
				outStream.flush();
			
			while(true){
				if (output!=null){
					outStream.writeObject(PushMsg(output));
					output=null;
				}
				
				if (input!=null){
					CF.AddMsg(input);
					System.out.println("Connector)Writting: "+input);
					input=null;
				}
			}
		



И сама форма:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
public class Chat_Form implements Runnable{
	private JTextArea JField_Read;
	private JTextArea JField_Send;	
	

	public void run(){
		System.out.println("(Chat_Form)Create");
		JFrame JF = new JFrame("");
		JF.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JF.setBounds(100,100,500,300);
		JF.setResizable(false);
		
		JPanel PL = new JPanel(new GridLayout (2,0));
		JPanel PL_South = new JPanel (new GridLayout (2,0));
		
		JField_Read = new JTextArea();
		JField_Send = new JTextArea();
		JField_Read.setEditable(false);
		JButton btn_Send = new JButton("Отправить!");
		
		PL.add(JField_Read);
		PL_South.add(JField_Send);
		PL_South.add(btn_Send);
		
		PL.add(PL_South,BorderLayout.SOUTH);
		
		JF.add(PL);
		JF.setVisible(true);
		System.out.println("(Chat_Form)Stop Creating");
		
		btn_Send.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent e) {
				String txt = JField_Send.getText();
				if (txt.length()>0){
					Connector.SetOutputMessage(txt);
					JField_Send.setText("");
				}
			}
		});
	}
	
	
	public void AddMsg(String s){
		JField_Read.append(s);
	}
}
...
Рейтинг: 0 / 0
Swing Форма в отдельном потоке
    #38491641
Hacktivist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Причем в логах прописывается (Chat_Form)Create и Chat_Form)Stop Creating
...
Рейтинг: 0 / 0
Swing Форма в отдельном потоке
    #38491659
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Потому что GUI работает только в Event Dispatch Thread. Это вы свой чат можете в другие потоки зафигарить. А GUI, только в EDT и никак иначе.
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Swing Форма в отдельном потоке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]