के साथ निश्चित चौड़ाई, परिवर्तनीय ऊंचाई मुझे जावा के लेआउट प्रबंधकों के साथ एक परेशानी की समस्या है। मेरे पास निम्न स्थिति है: एक पैनल में ए दो अन्य पैनल बी एक पूर्ण लेआउट और सी फ़्लोलाउट के साथ हैं। बी अत्यधिक अनुकूलित है और setPreferredSize
के माध्यम से एक निश्चित आकार सेट है। सी में निश्चित चौड़ाई बी होना चाहिए, लेकिन अन्यथा प्रवाह में कितने घटक जोड़े गए हैं, इस पर निर्भर करते हुए अन्यथा एक चरणीय ऊंचाई का होना चाहिए। परिणामी ए के बाद निश्चित चौड़ाई और A.height + B.height
ऊंचाई के रूप में होना चाहिए - कम से कम यही वही है जो मैं चाहता हूं।जेपीनेल में प्रवाह
मैं हालांकि क्या मिलेगा कि पैनल एक सब (मैं अपनी पसंद के आकार सेट करने के बावजूद) पर तय नहीं है, और पैनल में सामग्री की चौड़ाई सी स्वचालित रूप से लपेटकर नहीं कर रहे हैं, लेकिन इसके बजाय में प्रदर्शित किए जाते है एक लंबी लाइन बेशक यह बी बनाता है जो इसकी तुलना में बड़ी चौड़ाई होनी चाहिए।
इसे ठीक करने के लिए मैं क्या कर सकता हूं? क्या कोई बेहतर लेआउट है, या क्या मुझे अनुकरण करना है कि सभी एक पूर्ण लेआउट का उपयोग कर रहे हैं?
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
public class Test extends JPanel
{
public Test()
{
this.setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
JPanel top = new JPanel(null);
top.setBackground(Color.GREEN);
top.setPreferredSize(new Dimension(200, 20));
JPanel flowPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 2, 2));
this.add(top);
this.add(flowPanel);
flowPanel.add(new JButton("x"));
flowPanel.add(new JButton("x"));
flowPanel.add(new JButton("x"));
flowPanel.add(new JButton("x"));
flowPanel.add(new JButton("x"));
flowPanel.add(new JButton("x"));
flowPanel.add(new JButton("x"));
flowPanel.add(new JButton("x"));
flowPanel.add(new JButton("x"));
flowPanel.add(new JButton("x"));
flowPanel.add(new JButton("x"));
flowPanel.add(new JButton("x"));
}
}
वह वास्तव में बहुत अच्छी तरह से काम करता है! यदि कोई मूल समाधान के साथ नहीं आता है, तो यही वह है जिसके साथ मैं जा रहा हूं। धन्यवाद! बस इतना बुरा है कि मानक लेआउट प्रबंधक ऐसी आम (कम से कम मेरे लिए) स्थितियों में असफल रहते हैं, और आप हमेशा एक नए कस्टम के साथ समाप्त होते हैं ..:/ – poke
@poke: मेरे लिए, यह एक प्रकार का चयन पूर्वाग्रह का प्रतिनिधित्व करता है- मैं भूल जाता हूं कि मानक लेआउट आमतौर पर काम करते हैं! 'WrapLayout' भी अपने स्वयं के प्रबंधक लिखने का एक अच्छा उदाहरण है। – trashgod