2012-08-28 14 views
5

मैं स्विंग में स्टाइल एडिटरकिट को विस्तारित करने की कोशिश कर रहा हूं ताकि संपादक के अंदर जेएलएबल शामिल हो सके। मैं ऐसा करने में सक्षम था और यही वह है जो मुझे अब तक मिला है। नीचे दी गई छवि में, हाइलाइट किया गया टेक्स्ट बटन प्रकार जेएलएबल है जबकि शेष पाठ सामान्य टेक्स्ट है।जेएलबीएल को जेडडिटरपेन में कैसे जोड़ा जाए?

enter image description here

आप लेबल देख सकते हैं सामान्य पाठ की तुलना में थोड़ा नीचे बना देता है। मैं शेष पाठ के शीर्ष के साथ अपने शीर्ष को कैसे संरेखित करूं?

class ComponentView(Element elem) { 
     @Override 
     protected Component createComponent() { 
     JLabel lbl = new JLabel(""); 
     lbl.setOpaque(true); 
     lbl.setBackground(Color.red); 
     try { 
       int start = getElement().getStartOffset(); 
       int end = getElement().getEndOffset(); 
       String text = getElement().getDocument().getText(start, end - start); 
       lbl.setText(text); 
     } catch (BadLocationException e) {} 
     return lbl; 
     } 
} 

उत्तर

5

Component.getAlignmentY कि पाठ आधारभूत घटक रिश्तेदार की स्थिति के रूप में ComponentView में सुझाव को नियंत्रित करता है समायोजित करने का प्रयास:

यहाँ का मानना ​​है कि इस लेबल तत्व बनाने के लिए प्रयोग किया जाता है के लिए कोड है।

आप JTextPane का उपयोग करने का भी प्रयास कर सकते हैं जो एम्बेडेड घटकों के लिए आसान समर्थन प्रदान करता है। घटक insertComponent() विधि का उपयोग करके जोड़ा जा सकता है। यहां एक उदाहरण दिया गया है, यह भी setAlignmentY:

import java.awt.BorderLayout; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextPane; 
import javax.swing.SwingUtilities; 

public class TextPaneDemo { 
    private static void createAndShowGUI() { 
     final JTextPane pane = new JTextPane(); 
     pane.setText("Some text"); 

     JButton buttonButton = new JButton("Insert label"); 
     buttonButton.addActionListener(new ActionListener() { 
      public void actionPerformed(ActionEvent event) { 
       JLabel label = new JLabel("label"); 
       label.setAlignmentY(0.85f); 
       pane.insertComponent(label); 
      } 
     }); 

     JPanel panel = new JPanel(new BorderLayout()); 
     panel.add(buttonButton, BorderLayout.SOUTH); 
     panel.add(pane, BorderLayout.CENTER); 

     JFrame frame = new JFrame(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.add(panel); 
     frame.setSize(400, 200); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       createAndShowGUI(); 
      } 
     }); 
    } 
} 
संबंधित मुद्दे