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

Класс 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
06.12.2013, 13:14:43
    #38491641
Hacktivist
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Swing Форма в отдельном потоке
Причем в логах прописывается (Chat_Form)Create и Chat_Form)Stop Creating
...
Рейтинг: 0 / 0
06.12.2013, 13:22:44
    #38491659
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Swing Форма в отдельном потоке
Потому что GUI работает только в Event Dispatch Thread. Это вы свой чат можете в другие потоки зафигарить. А GUI, только в EDT и никак иначе.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Swing Форма в отдельном потоке / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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