フローレイアウトで強制改行するサンプルです。
  • やってる事は、JSeparatorを縦幅0、横幅ウィンドウと同じサイズで追加するだけですが!

サンプルダウンロード


サンプルソース

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.TextField;
 
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JSeparator;
 
/*
 * フローレイアウトで強制改行するサンプルです。
 * ・やってることは、JSeparatorを縦幅0、横幅ウィンドウと同じサイズで追加するだけです。
 */
public class FlowNewLine extends JFrame {
	public static void main(String[] args) {
		new FlowNewLine();
	}
 
	public FlowNewLine() {
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		int width = 300;
		setBounds(200, 100, width, 220);
		setTitle("フローレイアウトで強制改行");
 
		// フローレイアウト設定
		FlowLayout l = new FlowLayout(FlowLayout.LEFT);
		l.setVgap(3);
		l.setHgap(5);
		setLayout(l);
		setResizable(false); // サイズ変更禁止
 
		add(getHr(width, 0));
		add(getLabel("住所"));
		add(new TextField(20));
 
		add(getHr(width, 0));
		add(getLabel("氏名"));
		add(new TextField(20));
 
		add(getHr(width, 0));
		add(getLabel("年齢"));
		add(new TextField(3));
 
		add(getHr(width, 0));
		add(getLabel("電話番号"));
		add(new TextField(10));
 
		add(getHr(width, 0));
		add(getLabel("趣味"));
		add(new TextField(20));
 
		add(getHr(width, 0));
		add(getHr(width - 18, 1));
 
		// ボタンをセンタリング表示のためにパネルを追加
		JPanel p = new JPanel();
		p.setLayout(new FlowLayout());
		p.setPreferredSize(new Dimension(width - 18, 50));
		p.add(new JButton("OK"));
		add(p);
 
		setVisible(true);
	}
 
	public JLabel getLabel(String text) {
		JLabel label = new JLabel(text);
		label.setPreferredSize(new Dimension(65, 20));
		label.setHorizontalAlignment(JLabel.RIGHT);
		return label;
	}
 
	public JSeparator getHr(int width, int hight) {
		JSeparator sp = new JSeparator(JSeparator.HORIZONTAL);
		sp.setPreferredSize(new Dimension(width, hight));
		return sp;
	}
}