gpt4 book ai didi

java - 如何使 JTextPane 中的文本和 JComponent 垂直居中?

转载 作者:搜寻专家 更新时间:2023-11-01 01:35:58 24 4
gpt4 key购买 nike

目前看起来是这样

enter image description here

要怎么做才能让它看起来如此?

enter image description here

下面是我的代码:

    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 内部类

http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/javax/swing/text/ParagraphView.java#ParagraphView.Row

指向内部类 Row extends BoxView

你应该用自己的替换它。尝试覆盖

public float getAlignment(int axis) 

返回 CENTER (0.5)。如果这无助于重写 layoutMinorAxis(0 以返回正确的偏移量(偏移)。

关于java - 如何使 JTextPane 中的文本和 JComponent 垂直居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13933402/

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