gpt4 book ai didi

java - JTextPane - 自动换行插入的 JLabel 组件

转载 作者:行者123 更新时间:2023-11-29 04:47:10 26 4
gpt4 key购买 nike

我在 JTextPane 中插入了 20 个组件 (JLabel)。不幸的是,所有标签都在一行上。

如何强制 JTextPane 自动包装插入的对象?

enter image description here

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);
}
}

最佳答案

JTextPane 在空格处换行。您的文档没有任何空格,因此没有任何内容可以换行。您可以在标签之间添加一个空格:

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);
doc.insertString(doc.getLength(), " ", null);
tp.setCaretPosition(doc.getLength());
}

另外,仍然不确定为什么要为此使用 JTextPane。您可以只使用 JPanel 并将面板上的组件换行到下一行。参见 Wrap Layout使用这种方法的解决方案。

这也应该使您上一个问题 (JTextPane - get component values) 的解决方案更容易,因为您将处理真实的组件,您不需要搜索文档来获取单击的标签。

关于java - JTextPane - 自动换行插入的 JLabel 组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36696807/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com