我有我插入了20個組件(JLabels)的JTextPane。不幸的是,所有的標籤都在一條線上。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