您好人StackOverflow。我遇到了一個我似乎無法解決的問題。在開始之前,我應該給出一個警告,雖然我不是初學者,但我也不是很高級,所以如果你能夠適當地給出你的答案,那就太棒了。更改JTextField的尺寸
我無法控制JTextField的尺寸,並且我已經使用了我所知道的所有方法。下面的代碼:
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,然後在第二行中放置2個空JLabel,但這似乎是處理這個問題的一種原始方式。有沒有這樣做的有效方式?
編輯:如果它很重要,我可以用setPreferredSize控制textfields的寬度,而不是高度。
只是澄清所以你說,如果我把文本字段到一個JLabel,並把一個JLabel到一個JPanel,我將能夠改變與了setPreferredSize的尺寸? – oopsidoodles
@ViliMilner:我不會把JTextField放到JLabel中,至少不是常用的,但更經常地放到另一個JPanel中。 –
@ViliMilner:看例子。請注意,如果它是我的GUI,我不會以此方式對其進行編碼。 –