2011-01-21 26 views
5

का आकार बदलें मेरे पास जावा स्विंग जेएलएबल्स की एक सरणी है। मेरे प्रोग्राम का उपयोगकर्ता जेएफआरएएम में एक नया जेएलएबल जोड़ सकता है, और मैं फ्रेम में जेएलएबल्स की संख्या के आधार पर जेएलएबल परिवर्तन में टेक्स्ट का आकार बनाना चाहता हूं। यदि बहुत सारे जेएलएबल्स हैं, तो टेक्स्ट अभी भी फिट होगा और अन्य जेएलएबल्स को ओवरलैप नहीं करेगा।जेएलएबल में टेक्स्ट बनाना गतिशील रूप से

+0

ठीक है .. क्या आपके पास इसके बारे में कोई सवाल है? यदि ऐसा है, तो अपनी पोस्ट को संपादित करने और प्रश्न जोड़ने के लिए स्वतंत्र महसूस करें। पसंदीदा रूप से एक एसएससीसीई (http://pscode.org/sscce.html) के साथ जो आपने पहले ही कोशिश की है। –

+0

सवाल यह है कि लेबल में टेक्स्ट को डायनामिक आकार के लिए कुछ अच्छा कोड क्या है, ताकि उपयोगकर्ता लेबल के लिए – italiano40

उत्तर

2

सुंदर दिखता नहीं है, लेकिन यदि आप यही चाहते हैं, तो यहां संकलन और चलाने के लिए कोड का एक त्वरित टुकड़ा है। अपनी परियोजना के लिए आपको जो भी कोड चाहिए उसे निकालने के लिए स्वतंत्र महसूस करें। मजा करो, - एमएस

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class LabelSize extends JPanel {  

    private Font  font; 
    private JPanel  panel; 
    private JLabel  label = new JLabel ("Font Size Adapter Label", JLabel.CENTER); 
    private JTextField tf = new JTextField ("Type in text for new label here and hit [Enter]"); 

    public LabelSize() {   
     super (new BorderLayout()); 
     panel = labelPanel(); 
     add (panel, "North"); 
     add (tf, "South"); 
     tf.addActionListener (new ActionListener() { 
      public void actionPerformed (ActionEvent e) { 
       label.setText (tf.getText()); 
       label.setFont (font); 
       int labelW = (int) Math.ceil (label.getPreferredSize().getWidth()); 
       int maxWidth = (int) Math.floor (panel.getSize().getWidth()); 
       if (labelW <= maxWidth) 
        return; 
       for (int k = 1 ; labelW > maxWidth ; k++) { 
        Font labelFont = font.deriveFont (font.getSize() - k*1.0f); 
        label.setFont (labelFont); 
        labelW = (int) Math.ceil (label.getPreferredSize().getWidth()); 
     }}}); 
    } 

    private JPanel labelPanel() { 
     JPanel lp = new JPanel(new BorderLayout()); 
     lp.setPreferredSize (new Dimension (270,30)); 
     lp.add (label, "North"); 
     font = label.getFont(); 
     return lp; 
    } 

    public static void main (String[] args) { 
     JFrame lsFrame = new JFrame ("Lfit"); 
     lsFrame.add (new LabelSize()); 
     lsFrame.pack(); 
     lsFrame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE); 
     lsFrame.setVisible(true); 
}} 
+0

धन्यवाद जोड़ सकें, लेकिन कोई भी जो मेरे लिए काम नहीं कर रहा है, मुझे उस चीज़ के आधार पर आकार देने की आवश्यकता है Jlabel – italiano40

+0

का आकार आपका स्वागत है, और क्षमा करें, मुझे कॉमेंट समझ में नहीं आता - कोड का कौन सा हिस्सा काम नहीं कर रहा है? मैंने बस एक संपादक पर इसे कॉपी किया, चिपकाया, संकलित किया और इसे चलाया, बस ठीक चलाता है। हो सकता है कि मुझे आपका प्रश्न सही न हो - आप किस घटक (कुछ) का आकार बदलना चाहते थे? क्या आप चाहते हैं कि जेएलएबल्स निश्चित (डिफ़ॉल्ट) फ़ॉन्ट हों? –

संबंधित मुद्दे