私はJTextPane
を取得して、どのようなコンテンツでもその高さを調整しようとしています。私ができることは、Dimensionを使ってピクセル単位で固定高さを設定することだけです。JTextPaneでコンテンツの高さを調整する
JTextPane
折りたたみ/展開をコンテンツに合わせるにはどうすればよいですか?
に追加されたGridBagLayout
のJPanel
にこれを使用すると付け加えることがあります。
私はJTextPane
を取得して、どのようなコンテンツでもその高さを調整しようとしています。私ができることは、Dimensionを使ってピクセル単位で固定高さを設定することだけです。JTextPaneでコンテンツの高さを調整する
JTextPane
折りたたみ/展開をコンテンツに合わせるにはどうすればよいですか?
に追加されたGridBagLayout
のJPanel
にこれを使用すると付け加えることがあります。
私はそれを行うための任意の直接的な方法を知りませんが、これはあなたにいくつかのアイデアを与えることがあります。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.text.*;
public class TextPanePerfectSize extends JFrame
{
JTextField textField;
JTextPane textPane;
public TextPanePerfectSize()
{
textField = new JTextField(20);
textField.setText("add text");
getContentPane().add(textField, BorderLayout.NORTH);
textField.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
try
{
Document doc = textPane.getDocument();
doc.insertString(doc.getLength(), " " + textField.getText(), null);
textField.setText("");
Dimension d = textPane.getPreferredSize();
Rectangle r = textPane.modelToView(textPane.getDocument().getLength());
d.height = r.y + r.height;
textPane.setPreferredSize(d);
getContentPane().validate();
// pack();
}
catch(Exception e2) {}
}
});
JLabel label = new JLabel("Hit Enter to Add Text to Text Pane");
getContentPane().add(label);
JPanel south = new JPanel();
textPane = new JTextPane();
textPane.setText("Some text");
textPane.setEditable(false);
textPane.setPreferredSize(new Dimension(120, 23));
south.add(textPane);
getContentPane().add(south, BorderLayout.SOUTH);
}
public static void main(String[] args)
{
JFrame frame = new TextPanePerfectSize();
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
JTextPane tp = new JTextPane();
setLayout(new BorderLayout()); // set layout on parent
add(tp, BorderLayout.CENTER);
これは私のために動作します。
作品の並べ替えとしない。 modelToViewはnullを返します。ドキュメントによると、コンポーネントは動作するためのサイズになっている必要があります。私はvalidate()、repaint()、pack()を試みましたが、何も助けません。いくつかの祖先コンポーネントでこれらのメソッドの1つを呼び出す必要がありますか? JTextPaneはJPanel内に存在するJPanelに追加され、JPanel内に存在し、JFrameに追加されたJScrollPane内にあります。 – fiskeben
コンテンツの適切な高さを見つける方法を示すhttp://java-sl.com/tip_text_height_measuring.html – StanislavL