기능을 무시하십시오. GUI에만 관심이 있습니다.다음 코드에서 JTextArea 및 JTextField의 크기를 원하는대로 설정하는 방법은 무엇입니까?
mainPanel이라는 JPanel 구성 요소를 사용하고 receivingWindow라는 JTextArea와 sendWindow라는 JTextField를 추가했습니다.
receivingWindow = new JTextArea(50,50);
sendWindow = new JTextField(30);
가 어떻게 내 마음에 드는 크기를 설정하는 :
receiveWindow 및 sendWindow는 다음 줄에 자신의 크기를 지정하는 날에도 불구하고 전체 프레임 공간을 차지?
코드에서 지정된 무엇package hf;
import java.io.*;
import java.net.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class ChatClient
{
private JFrame frame;
private JTextArea receivingWindow;
private JTextField sendWindow;
private JButton sendButton;
private JPanel mainPanel;
private Socket connectionSocket;
private final static int serverPortNumber = 5000;
private PrintWriter printWriter;
private BufferedReader incomingReader;
private InputStreamReader incomingInputStreamReader;
private JScrollPane scrollPane;
public static void main(String[] args)
{
ChatClient chatClient = new ChatClient();
chatClient.startUp();
}
public void startUp()
{
setUpGui();
setUpNetworking();
handleEvents();
setUpListenerThread();
displayFrame();
}
private void setUpGui()
{
frame = new JFrame("Chat Client");
receivingWindow = new JTextArea(50,50);
sendWindow = new JTextField(30);
sendButton = new JButton("Send");
mainPanel = new JPanel();
mainPanel.setLayout(new BoxLayout(mainPanel,BoxLayout.PAGE_AXIS));
scrollPane = new JScrollPane(receivingWindow);
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
mainPanel.add(scrollPane);
mainPanel.add(sendWindow);
mainPanel.add(sendButton);
frame.getContentPane().add(BorderLayout.CENTER, mainPanel);
}
private void handleEvents()
{
sendButton.addActionListener(new MySendButtonListener());
}
private void setUpNetworking()
{
try
{
connectionSocket = new Socket("127.0.0.1",serverPortNumber);
printWriter = new PrintWriter(connectionSocket.getOutputStream());
incomingInputStreamReader = new InputStreamReader(connectionSocket.getInputStream());
incomingReader = new BufferedReader(incomingInputStreamReader);
}
catch(Exception ex)
{
System.out.println("Error in connecting to the server.");
}
}
private class MySendButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent event)
{
String message = sendWindow.getText();
printWriter.println(message);
printWriter.flush();
sendWindow.setText("");
sendWindow.requestFocus();
}
}
private void setUpListenerThread()
{
try
{
Runnable incomingThread = new IncomingMessageRunnable();
Thread thread = new Thread(incomingThread);
thread.start();
}
catch(Exception ex)
{
System.out.println("Error in setting up thread for listening to incoming menssages.");
}
}
private class IncomingMessageRunnable implements Runnable
{
public void run()
{
String incomingMessage = null;
try
{
while((incomingMessage = incomingReader.readLine())!=null)
{
receivingWindow.append(incomingMessage+"\n");
}
}
catch(Exception e)
{
System.out.println("Error in receiving incoming messages");
}
}
}
private void displayFrame()
{
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500, 500);
frame.setVisible(true);
}
}
BoxLayout 최소, 최대 및 권장 크기로 작업, 힌트 - JScrollPane – mKorbel
@mKorbel, 좀 더 구체적으로 말씀해 주시겠습니까? 나는 초보자이다. – user3760100
* "기능을 무시하십시오. GUI에만 관심이 있습니다."* 게시하기 전에 제거하면 쉽게 수행 할 수 있습니다. 더 나은 도움을 받으려면 [MCVE] (http://stackoverflow.com/help/mcve) (최소 완성 입증 가능 사례) 또는 [SSCCE] (http://www.sscce.org/) (간략히, 자체 포함 , 올바른 예). –