フレームが表示JTextArea
されると、フレーム幅のサイズに達するまで水平方向にストレッチし、フレームのサイズを変更すると、フレームJTextArea
の幅に合わせて再びストレッチします。入力が追加されるJTextArea
と、テキストを新しい行に折り返すのではなく、水平方向に拡大し続けます。
がなくてもsetLineWrap(true)
とsetWrapStyleWord(true)
はJTextArea
フレームに正しく表示されますがJTextArea
、最初の行で が引き伸ばされます。
この問題を解決するにはどうすればよいですか?
public class GridBagExample {
private JFrame frame;
private final JPanel panel;
private JLabel frontText, reverseText;
private JTextField frontTextField;
private final JTextArea reverseTextArea;
private GridBagLayout gridBagLayout;
private GridBagConstraints constraints;
private JButton submit, cancel;
public GridBagExample() {
frame = new JFrame("Create new flashcard");
gridBagLayout = new GridBagLayout();
constraints = new GridBagConstraints();
panel = new JPanel(gridBagLayout);
panel.setSize(240,220);
frontText = new JLabel("Front Text");
constraints.ipadx = 1;
constraints.ipady = 1;
constraints.gridx = 0;
constraints.gridy = 0;
gridBagLayout.setConstraints(frontText, constraints);
panel.add(frontText);
frontTextField = new JTextField(15);
constraints.ipadx = 1;
constraints.ipady = 1;
constraints.gridx = 2;
constraints.gridy = 0;
gridBagLayout.setConstraints(frontTextField, constraints);
panel.add(frontTextField);
reverseText = new JLabel("Reverse Text");
constraints.ipadx = 1;
constraints.ipady = 1;
constraints.gridx = 0;
constraints.gridy = 1;
gridBagLayout.setConstraints(reverseText, constraints);
panel.add(reverseText);
reverseTextArea = new JTextArea(5,15);
reverseTextArea.setWrapStyleWord(true);
reverseTextArea.setLineWrap(true);
constraints.ipadx = 1;
constraints.ipady = 1;
constraints.gridx = 2;
constraints.gridy = 1;
gridBagLayout.setConstraints(reverseTextArea, constraints);
panel.add(reverseTextArea);
submit = new JButton("Submit");
constraints.ipadx = 1;
constraints.ipady = 1;
constraints.gridx = 2;
constraints.gridy = 2;
gridBagLayout.setConstraints(submit, constraints);
panel.add(submit);
frame.add(panel);
frame.setSize(300, 300);
frame.setVisible(true);
}
public static void main(String[] args) throws Exception {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new GridBagExample();
}
});
}
}