2016-12-14 6 views
0

こんにちは皆私はチャットセッションGUIを作成しようとしています。私はすべてのコンポーネントを正しい順序で配置することができました。唯一の問題は、JtextAreaでテキストを入力するときにも、同じディメンションでコンポーネントが保持されているウィンドウのサイズを変更しようとするたびに、フレームが応答しないことです。私はJScrollPaneを使用して試したり、最大次元を設定しようとしましたが、動作しません。誰でも助けてくれますか?これは私のコードです。JScrollPaneとレスポンスGUIとgridbaglayout

import java.awt.*; 

import javax.swing.*; 
import javax.swing.border.Border; 
import javax.swing.text.DefaultCaret; 

public class ClientGUI extends JPanel { 

    public ClientGUI() { 
     Dimension size = getPreferredSize(); 
     size.width = 500; 
     setPreferredSize(size); 
     setBorder(BorderFactory.createTitledBorder("Peron")); 

     GridBagConstraints gbc = new GridBagConstraints(); 
     JTextArea chat, list; 
     JTextField wm; 
     JButton sm, sf, pm, lo; 
     JFrame fr = new JFrame("FRAME"); 
     fr.setVisible(true); 
     fr.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     fr.setSize(200, 200); 
     fr.setMinimumSize(new Dimension(1400, 1000)); 
     JPanel panel = new JPanel(new GridBagLayout()); 
     fr.add(panel); 

     gbc.insets = new Insets(40, 40, 40, 40); 
     chat = new JTextArea("Welcome to the chat room"); 
     // chat.setEditable(false); 
     JScrollPane scroll = new JScrollPane(chat); // place the JTextArea in a 
                // scroll pane 
     panel.add(scroll); 
     gbc.fill = GridBagConstraints.HORIZONTAL; 
     gbc.gridwidth = 5; 
     gbc.gridheight = 7; 
     // gbc.gridwidth = java.awt.GridBagConstraints.RELATIVE; 
     gbc.gridx = 0; 
     gbc.gridy = 1; 
     gbc.ipady = 400; 
     gbc.ipadx = 200; 
     panel.add(chat, gbc); 

     wm = new JTextField("Insert message", 10); 
     gbc.fill = GridBagConstraints.HORIZONTAL; 
     gbc.gridwidth = 1; 
     gbc.gridheight = 2; 
     gbc.ipady = 150; 
     gbc.ipadx = 300; 
     gbc.gridx = 0; 
     gbc.gridy = 10; 
     panel.add(wm, gbc); 

     list = new JTextArea("User online"); 

     gbc.gridx = 5; 
     gbc.gridy = 2; 
     gbc.ipady = 400; 
     gbc.ipadx = 300; 
     panel.add(list, gbc); 

     sm = new JButton("Send"); 
     gbc.gridheight = 1; 
     gbc.fill = GridBagConstraints.HORIZONTAL; 
     gbc.gridx = 3; 
     gbc.gridy = 10; 
     gbc.ipady = 20; 
     gbc.ipadx = 200; 
     panel.add(sm, gbc); 

     pm = new JButton("Private message"); 
     gbc.fill = GridBagConstraints.HORIZONTAL; 
     gbc.gridx = 4; 
     gbc.gridy = 10; 
     gbc.ipady = 20; 
     gbc.ipadx = 20; 
     panel.add(pm, gbc); 

     lo = new JButton("LOGOUT"); 
     gbc.gridx = 5; 
     gbc.gridy = 1; 
     gbc.ipady = 20; 
     panel.add(lo, gbc); 

     sf = new JButton("Send File"); 
     gbc.fill = GridBagConstraints.HORIZONTAL; 
     gbc.gridx = 5; 
     gbc.gridy = 10; 
     gbc.ipady = 20; 
     gbc.ipadx = 20; 
     panel.add(sf, gbc); 

    } 

} 

答えて

2

panel.add(scroll)を入力する場所に問題があります。この行を削除します。また、パネルにテキストエリアではなくスクロールペインを追加する必要があります。変更panel.add(chat,gbc)からpanel.add(scroll,gbc)

+0

ありがとう、それは働いた! – Werokk

+0

ユーザーがウィンドウのサイズを変更したときにコンポーネントが応答するようにする方法を知っていますか? – Werokk

+0

@Werokkあなたは何を意味するのかを明確にすることができますか?私は奇妙に作用するフレームに気付いたようでした。 'fr.setMinimumSize()'と 'fr.setSize()'の2行を削除し、コードの最後に 'fr.pack()'を追加しました。 簡単なトラブルシューティングのために、パネルとフレームの構成を分離するコードを再構築することを強くお勧めします。 – KyleKW