[英]Blank Java Swing Frame
我是一名學生,正在嘗試更多地了解Java開發,目前正在使用swing創建一個簡單的客戶端/服務器IM應用程序。
讓我試着解釋一下我得到的問題:
Login類在啟動時運行,在成功通過服務器驗證后(工作正常),ClientChat類被實例化。
ClientChat創建一個新的JFrame,與服務器建立新連接並創建新的I / O流。 所有這些背景的東西工作正常,但新框架是完全空白的。
如果我在沒有Login類的情況下運行應用程序(即直接運行ClientChat),則不存在此問題。
到目前為止不成功的方法:
從登錄():
panel.add(userLabel);
panel.add(passLabel);
panel.add(userEntry);
panel.add(passEntry);
panel.add(button);
frame.add(panel, BorderLayout.NORTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("Chat Room Authentication");
frame.setSize(300, 120);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
...
frame.setVisible(false);
ClientChat clientChat = new ClientChat(serverIP);
clientChat.start();
來自ClientChat():
userText = new JTextField();
chatWindow = new JTextArea();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setTitle("Logged in as "+user.toUpperCase());
frame.add(userText, BorderLayout.SOUTH);
frame.add(new JScrollPane(chatWindow), BorderLayout.CENTER);
frame.setSize(300, 150);
frame.setVisible(true);
你有一個經典的Swing線程問題,你在Swing的事件線程上運行長時間運行的代碼,也稱為E vent D ispatch T hread或EDT ,這樣做會阻止EDT執行它繪制GUI並與用戶交互的必要任務。
解決方案:使用SwingWorker幫助您創建一個后台線程,該線程允許長進程不干擾Swing GUI並允許它與GUI良好通信。
有關這方面的更多信息,請查看: 課程:Swing中的並發性 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.