20個のコンポーネント(JLabels)を挿入したJTextPaneがあります。残念ながら、すべてのラベルは1行にあります。JTextPane - 挿入されたJLabelコンポーネントの自動ラップ
JTextPaneが自動的に挿入されたオブジェクトをラップするように強制できますか?
package texteditor;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
public class JTextPaneExample extends JPanel {
private JTextPane tp;
public JTextPaneExample() {
setLayout(new BorderLayout(0, 0));
JPanel panel = new JPanel();
add(panel, BorderLayout.CENTER);
panel.setLayout(new BorderLayout(0, 0));
JScrollPane scrollPane = new JScrollPane();
panel.add(scrollPane, BorderLayout.CENTER);
tp = new JTextPane();
tp.setEditable(false);
scrollPane.setViewportView(tp);
for (int i = 0; i < 20; i++) {
JLabel lbl = new JLabel("AAAA ");
lbl.setOpaque(true);
lbl.setBorder(BorderFactory.createLineBorder(Color.black, 1));
tp.insertComponent(lbl);
}
}
public static void main(String[] args) {
JFrame frame = new JFrame("GoBoard");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new JTextPaneExample());
frame.setPreferredSize(new Dimension(400, 400));
frame.pack();
frame.setVisible(true);
}
}
'BorderLayout'を使用してコンテナに' JTextPane'を追加し、それを 'JScrollPane'に追加する必要があります(少なくとも過去に私のものがあります) – MadProgrammer
私は好奇心が強いでしょうあなたの最終的な解決策。フォーラムに投稿してください。私は、JTextPanelで使用されるレイアウトマネージャーを見たことがありません。 JTextPaneでレイアウトマネージャを使用している場合は、なぜJTextPaneを使用しているのかという疑問があります。私には奇妙な解決策のようだ。 – camickr
@MadProgrammer、私はこの質問で昼食をとっていると思う。私は答えやあなたの提案を理解していません。私はあなたのアプローチを使って過去のラッピングを防止しています。 [折り返しテキスト枠なし](https://tips4java.wordpress.com/2009/01/25/no-wrap-text-pane/)を参照してください。私が(ラップしている)私の提案を使用して、あなたの提案を追加するとき、ラッピングはありません。 – camickr