मैं एक ऐसा संवाद बनाना चाहता हूं जिसमें किसी प्रकार का टेक्स्ट तत्व (जेएलएबल/जेटीक्स्टएरिया इत्यादि) है जो बहु पंक्तिबद्ध है और शब्दों को लपेटता है। मैं चाहता हूं कि संवाद एक निश्चित चौड़ाई का हो, लेकिन टेक्स्ट कितना बड़ा है इस पर निर्भर करता है। मैं इस कोड है:डायलॉग का आकार बदलने के लिए निश्चित चौड़ाई वाले मल्टी लाइन टेक्स्ट की ऊंचाई प्राप्त करें
import static javax.swing.GroupLayout.DEFAULT_SIZE;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class TextSizeProblem extends JFrame {
public TextSizeProblem() {
String dummyString = "";
for (int i = 0; i < 100; i++) {
dummyString += " word" + i; //Create a long text
}
JLabel text = new JLabel();
text.setText("<html>" + dummyString + "</html>");
JButton packMeButton = new JButton("pack");
packMeButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
pack();
}
});
GroupLayout layout = new GroupLayout(this.getContentPane());
getContentPane().setLayout(layout);
layout.setVerticalGroup(layout.createParallelGroup()
.addComponent(packMeButton)
.addComponent(text)
);
layout.setHorizontalGroup(layout.createSequentialGroup()
.addComponent(packMeButton)
.addComponent(text, DEFAULT_SIZE, 400, 400) //Lock the width to 400
);
pack();
}
public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
JFrame frame = new TextSizeProblem();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
});
}
}
जब कार्यक्रम यह इस तरह दिखता है चल रहा है: alt text http://lesc.se/stackoverflow/multiline_size_1.png
लेकिन मैं संवाद इस तरह दिखना चाहते हैं (जैसा कि जब आप पैक बटन दबाएँ): alt text http://lesc.se/stackoverflow/multiline_size_2.png
मुझे लगता है कि समस्या यह है कि लेआउट प्रबंधक स्क्रीन पर प्रदर्शित करने से पहले टेक्स्ट की उचित ऊंचाई निर्धारित करने में सक्षम नहीं था। मैंने विभिन्न मान्य(), अवैध(), validateTree() आदि की कोशिश की है लेकिन सफल नहीं हुए हैं।
क्या यह एचटीएमएल टैग प्रस्तुत करता है? नहीं! – Soley