目前看起来是这样
要怎么做才能让它看起来如此?
下面是我的代码:
JFrame f = new JFrame();
JTextPane textPane = new JTextPane();
JTextField component = new JTextField(" ");
component.setMaximumSize(component.getPreferredSize());
textPane.setSelectionStart(textPane.getDocument().getLength());
textPane.setSelectionEnd(textPane.getDocument().getLength());
textPane.insertComponent(component);
try {
textPane.getDocument().insertString(textPane.getDocument().getLength(), "text",
new SimpleAttributeSet());
} catch (BadLocationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
f.add(new JScrollPane(textPane));
f.setSize(200, 100);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
我找到的与该主题接近的单个问题:JTextPane insert component, faulty vertical alignment 但是没有答案如何更改对齐方式。但根据那里的讨论,这一定是可能的。
最佳答案
您可以使用这个 http://java-sl.com/tip_center_vertically.html
它也应该与 JComponents
一起工作。
您还可以覆盖 LabelView 的
getPreferredSpan()
,在底部添加一些空间。
或者你可以尝试覆盖 ParagraphView
中的 RowView
内部类
指向内部类 Row extends BoxView
你应该用自己的替换它。尝试覆盖
public float getAlignment(int axis)
返回 CENTER (0.5)。如果这无助于重写 layoutMinorAxis(0 以返回正确的偏移量(偏移)。
关于java - 如何使 JTextPane 中的文本和 JComponent 垂直居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13933402/