Bir düğmeyle tetiklenen bir açılır pencerede görüntülenen bir JEditorPane
sahibim. bölmesi bu nedenle bir JScrollPane
içine yuvalanmış oluyor, uzun bir metni içerir ve pop-up 300 x 100'lük bir maksimal boyuta sınırlandırılmıştır: JEditorPane
örneği ilk kez gösterildiğindeBir JEditorPane'in tercih edilen boyutunu uzun metinle kontrol etme
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);
}
});
}
(düğmedir yani zaman bir şekilde çok küçük bir tercih yüksekliğe (1) rapor etmek görünüyor) bir kez tıklandığında: müteakip düğme tıklama sonra
, düzen kimse beklenebilir nasıl adildir (2): Bu her zamanki gibi (2) başlatmak diye
ı zorlamak nasıl/uygun bir tercih boyutu empoze?
@finnw:. Mükemmel bir açıklama ve iş çevresinde - çok teşekkür ederim! – netzwerg
Mükemmel çözüm, +1! Biraz zaman olmasına rağmen, sizin için başka bir iyi soru var. JTextPane ile aynı yaklaşımı denedim, bu bir JEditorPane alt sınıfından başka bir şey değil. Ben, farkın nerede olduğunu anlamak için derinlere (BasicTextUI) gitmeye çalışıyorum ama belki zaten biliyor musun? :-) – AgostinoX