2011-01-07 18 views
11

मैंने एक jComboBox बनाया है लेकिन यह फ्रेम की पूरी चौड़ाई लेता है। चौड़ाई तय कैसे करें।JComboBox चौड़ाई

पैनल के लिए फ्रेम और बॉक्स लेआउट के लिए हाँ सीमा रेखा। मैं यहां कोड जोड़ रहा हूं:

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

public class Window8 { 

    JFrame frame; 
    JPanel panel; 
    JComboBox combo; 
    public void go(){ 

    String[] option = { "STUDENT", "TEACHER" }; 

    combo.setPreferredSize(new Dimension(1,25)); 
    combo = new JComboBox(option); 
    menu.setSelectedIndex(0); 

    frame = new JFrame("DELETION"); 
    frame.setLocationRelativeTo(null); 
    frame.setSize(400, 300); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.setVisible(true); 

    panel = new JPanel(); 
    panel.setLayout(new BoxLayout(panel,BoxLayout.Y_AXIS)); 

    frame.getContentPane().add(BorderLayout.NORTH,panel); 
    panel.add(combo); 
} 
+0

क्या आप किसी भी लेआउट का उपयोग कर रहे हैं? –

+0

मैंने अपना कोड जोड़ा है। कृपया इसे देखें। –

+0

पुन: स्वरूपित कोड; copyedited; अगर गलत है तो कृपया वापस करें। – trashgod

उत्तर

16

चौड़ाई स्वचालित रूप से कॉम्बो बॉक्स में जोड़े गए सबसे बड़े आइटम की चौड़ाई से निर्धारित होती है। आप का उपयोग करके प्रदर्शन को नियंत्रित कर सकते हैं:

comboBox.setPrototypeDisplayValue("text here"); 

तुम भी पॉपअप आकार को नियंत्रित करने के Combo Box Popup उपयोग करने पर विचार हो सकता है।

संपादित करें:

जब से तुम कोड है कि आप एक BoxLayout प्रयोग कर रहे हैं निम्नलिखित कोशिश कर सकते हैं पता चलता कहा:

comboBox.setMaximumSize(comboBox.getPreferredSize()); 

या आप की तरह कुछ कर सकते हैं:

JPanel wrapper = new JPanel(); 
wrapper.add(comboBox); 
panel.add(wrapper); 

पढ़ें Using Layout Managers पर स्विंग ट्यूटोरियल से अनुभाग यह समझने के लिए कि ये सुझाव कैसे काम करते हैं।

+0

एक संवेदनशील विकल्प के साथ 'setPrototypeDisplayValue' का उपयोग करके कंटेनर परिभाषा के अनुसार एक अलग आकार होने की अनुमति देते हुए JComboBox को ठीक से आकार देने में मदद करता है। धन्यवाद! – Alfabravo

4

comboBox.setPreferredWidth (200) आज़माएं; या चौड़ाई

jzd सेट करने के लिए कुछ अन्य मान सही है। वास्तविक एपीआई setPreferredSize(new Dimension(...));

+0

मैंने कोशिश की लेकिन यह त्रुटि देता है। "विधि सेट प्रीफेर्ड विड्थ (int) जेसीम्बोबॉक्स" –

+1

प्रकार के लिए अपरिभाषित है, एपीआई में देखकर, सटीक विधि है: setPreferredSize (आयाम पसंदीदा आकार) – jzd

+0

लेकिन चौड़ाई निर्धारित करने के लिए कोड क्या है .... ?? कृपया –

1

एक अलग लेआउट प्रबंधक का उपयोग करें। FlowLayout आज़माएं।

+0

का उत्तर दें लेकिन चौड़ाई निर्धारित करने के लिए कोड क्या है .... ??कृपया –

+0

का उत्तर दें चौड़ाई स्वचालित रूप से सामग्री के आधार पर निर्धारित की जाएगी या setPreferredSize() या कैमिकर के सुझाव का उपयोग करें। लेकिन अगर आप इसे एक ऐसे लेआउट में डालते हैं जो इससे फैलता है तो इससे कोई फर्क नहीं पड़ता। – jzd

0

यहां कुछ ऐसा है जो आप बॉक्स लेआउट के साथ कर सकते हैं।

  • लाइन धुरी के अक्ष बदलें,
  • क्षैतिज गोंद जोड़ें, कठोर क्षेत्र जोड़ें,
  • जगह घटक

। नीचे कोड स्निपेट:

panel = new JPanel(); 
panel.setLayout(new BoxLayout(panel, BoxLayout.LINE_AXIS)); 
panel.add(Box.createHorizontalGlue()); 
panel.add(Box.createRigidArea(new Dimension(10, 0))); 
panel.add(combo); 
frame.getContentPane().add(BorderLayout.NORTH, panel); 
2

आप setSize() विधि का उपयोग कर सकते हैं।

combo.setSize(200, combo.getPreferredSize().height); 
संबंधित मुद्दे