2016-12-14 11 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()'두 줄을 제거하고 코드의 끝에'fr.pack()'을 추가했다. 간편한 문제 해결을 위해 패널과 프레임 구성을 분리하는 코드를 재구성하는 것이 좋습니다. – KyleKW