Currently it looks so

What to do so that it looks so?

Below is my code:
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);
The single question which is near to this topic I found: JTextPane insert component, faulty vertical alignment
But there is no answer how to change the alignment. But it must be possible according to the discussion there.
You can use this http://java-sl.com/tip_center_vertically.html
It should work with
JComponentsas well.You can also override
LabelView'sgetPreferredSpan()adding some space to the bottom.Alternatively you can try to override
RowViewinner class inParagraphViewhttp://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/javax/swing/text/ParagraphView.java#ParagraphView.Row
That points to inner class Row extends BoxView
You should replace it with own one. Try to override
to return CENTER (0.5). If this does not help override layoutMinorAxis(0 to return proper offsets (shifted).