안녕하세요. 좋은 사람들 StackOverflow. 내가 고칠 수없는 문제가 생겼다. 시작하기 전에 나는 초심자가 아니지만 믿을 수 없을 정도로 발전하지는 않았 음을 경고해야합니다. 그렇다면 답을 적절하게 말하면 좋을 것입니다.JTextField의 크기를 변경하십시오.
나는 JTextFields의 크기를 제어 할 수 있으며, 내가 아는 모든 방법을 사용했습니다. 여기 코드는 다음과 같습니다
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
public class ShapeCalculatorView extends JFrame {
public static void main(String[] args) {
}
public ShapeCalculatorView() {
init();
}
public void init() {
setVisible(true);
setTitle("Shape Calculator");
setSize(500, 500);
//
GridLayout bodyLayout = new GridLayout(1, 2);
GridLayout answerLayout = new GridLayout(2, 2);
JPanel mainPanel = new JPanel();
mainPanel.setLayout(new BorderLayout());
mainPanel.setBorder(BorderFactory.createLineBorder(Color.red));
//
JPanel bodyPanel = new JPanel();
bodyPanel.setLayout(bodyLayout);
bodyPanel.setBorder(BorderFactory.createLineBorder(Color.blue));
mainPanel.add(bodyPanel, BorderLayout.PAGE_START);
JPanel resultPanel = new JPanel();
resultPanel.setLayout(bodyLayout);
mainPanel.add(resultPanel, BorderLayout.PAGE_END);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.Y_AXIS));
bodyPanel.add(buttonPanel);
JRadioButton buttonOne = new JRadioButton("Button 1");
JRadioButton buttonTwo = new JRadioButton("Button 2");
JRadioButton buttonThree = new JRadioButton("Button 3");
JRadioButton buttonFour = new JRadioButton("Button 4");
JRadioButton buttonFive = new JRadioButton("Button 5");
buttonPanel.add(buttonOne);
buttonPanel.add(buttonTwo);
buttonPanel.add(buttonThree);
buttonPanel.add(buttonFour);
buttonPanel.add(buttonFive);
String textLength = "Length: ";
String textWidth = "Width: ";
JPanel inputPanel = new JPanel();
inputPanel.setLayout(answerLayout);
bodyPanel.add(inputPanel);
JTextField fieldOne = new JTextField();
JTextField fieldTwo = new JTextField();
fieldOne.setPreferredSize(new Dimension(100, 2));
inputPanel.add(new JLabel(textLength));
inputPanel.add(fieldOne);
inputPanel.add(new JLabel(textWidth));
inputPanel.add(fieldTwo);
JPanel calcPanel = new JPanel();
resultPanel.add(calcPanel);
JButton calcButton = new JButton("CALCULATE");
calcPanel.add(calcButton);
JPanel answerPanel = new JPanel();
answerPanel.setLayout(answerLayout);
resultPanel.add(answerPanel);
answerPanel.add(new JLabel("Perimeter: "));
answerPanel.add(new JLabel("Area: "));
long perimeter = 5;
long area;
add(mainPanel);
pack();
}
}
public class ShapeCalculatorApp {
public static void main(String[] args) {
ShapeCalculatorView view = new ShapeCalculatorView();
}
}
당신이 모든 텍스트 필드가 꽤 높은 것을 제외하고 좋은 것을 볼 것이며, 내가 그들을 조금 작게하고 싶은이 실행한다면. 이미 setPreferredSize를 시도했지만 작동하지 않았다. GridLayout을 사용하고 있기 때문에 두 개의 텍스트 필드가 모든 공간을 사용하므로 setPreferredSize가 작동하지 않을 수있다. 또한 행의 수를 3으로 설정 한 다음 두 번째 행에서 빈 JLabel을 2 개만 넣을 수 있다고 생각했지만이 방법을 사용하면 원시를 처리하는 방법이 약간 생깁니다. 이 작업을 효율적으로 처리 할 수 있습니까?
편집 :이 중요한 경우에, 나는 setPreferredSize와 텍스트 필드의 폭, 그냥 높이를 제어 할 수 있어요. 이 셀을 채우기 위해 스트레칭 구성 요소를 강제로
그냥 그렇게 분명히 당신은 내가 setPreferredSize와 크기를 변경할 수있을 것입니다 내가했다 경우 인 JPanel에 JLabel의에 텍스트 필드를 넣고 JLabel의를 넣어 말을하는지? – oopsidoodles
@ViliMilner : JTextField를 JLabel에 넣지는 않겠지 만 적어도 일반적으로는 아니지만 다른 JPanel에는 더 자주 사용합니다. –
@ViliMilner : 예를 참조하십시오. 내 GUI라면이 방법으로 코딩하지 않을 것입니다. –