나는 JEditorPane
을 단추를 통해 트리거 된 팝업 안에 표시합니다. 창 따라서 그것은 JScrollPane
안에 중첩 것, 긴 텍스트를 포함하고 팝업가 300 × 100의 최대 크기로 제한됩니다 다음 JEditorPane
인스턴스가 처음으로 표시되면긴 텍스트를 가지는 JEditorPane의 적절한 사이즈의 제어
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
String text = "Potentially looooooong text. " +
"Lorem ipsum dolor sit amet, consectetuer" +
"adipiscing elit, sed diam nonummy nibh euismod " +
"tincidunt ut laoreet dolore magna aliquam" +
"adipiscing elit, sed diam nonummy nibh euismod" +
"erat volutpat. Ut wisi enim ad minim veniam, " +
"quis nostrud exerci tation.";
final JEditorPane editorPane = new JEditorPane("text/html", text);
editorPane.setEditable(false);
final JButton button = new JButton("Trigger Popup");
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JPopupMenu popup = new JPopupMenu();
popup.setLayout(new BorderLayout());
popup.add(new JScrollPane(editorPane));
Dimension d = popup.getPreferredSize();
int w = Math.min(300, d.width);
int h = Math.min(100, d.height);
popup.setPopupSize(w, h);
Dimension s = button.getSize();
popup.show(button, s.width/2, s.height/2);
}
});
JFrame f = new JFrame("Layout Demo");
f.setSize(200, 200);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setLocationRelativeTo(null);
f.getContentPane().add(button);
f.setVisible(true);
}
});
}
(버튼은 즉시 어떻게 든 너무 작은 적절한 높이 (1)보고하는 것)를 한 번 클릭 : 다음 버튼을 클릭 한 후
을 배치 한 그것을 기대하는 방법 그냥 (2) : 그것은 항상 같이 (2) 초기화 할 수 있도록
내가 적용 할 수 있습니다 방법/적절한 적절한 사이즈를 부과?
@finnw :. 우수한 설명 및 해결 방법을 - 정말 고마워요! – netzwerg
우수 솔루션, +1! 조금 시간이 지났지 만 또 다른 좋은 질문이 있습니다 .JTextPane과 동일한 접근 방식을 시도했는데, JEditorPane 하위 클래스 일뿐입니다. t 작업. 나는 차이 (BasicTextUI)를 이해하려고 깊이 들어가려고 노력하고있다. 그러나 아마 당신은 이미 그것을 알고 있는가? :-) – AgostinoX