मैं अपने लॉगिन डायलॉग बॉक्स के लिए स्टेटस बार बनाने की कोशिश कर रहा हूं लेकिन लेबल स्टेटस पैनल के बाईं ओर संरेखित नहीं होता है। यहाँ मेरा कोड है।

public class LoginDialog extends JDialog {

    private static final long serialVersionUID = 1L;

    protected JLabel lblTopSpace = null;
    protected JPanel loginPanel = null;
    protected JPanel statusPanel = null;

    public LoginDialog(String title) {

        super((Dialog)null);

        this.setTitle(title);

        Initialize();
    }

    protected void Initialize() {

        lblTopSpace = new JLabel("Login into Bookyard");
        lblTopSpace.setForeground(this.getBackground());

        loginPanel = new LoginPanel();
        statusPanel = new JPanel();

        statusPanel.setBorder(new BevelBorder(BevelBorder.LOWERED));
        statusPanel.setSize(this.getWidth(), 50);

        JLabel lblStatus = new JLabel("Status");
        lblStatus.setFont(new Font("Verdana", Font.PLAIN, 12));
        lblStatus.setHorizontalAlignment(SwingConstants.LEFT);
        statusPanel.add(lblStatus);

        this.setLayout(new BorderLayout());
        Container container = this.getContentPane();

        container.add(lblTopSpace, BorderLayout.NORTH);
        container.add(loginPanel, BorderLayout.CENTER);
        container.add(statusPanel, BorderLayout.SOUTH);

        this.pack();
    }
}

यहाँ यह वर्तमान में कैसा दिखता है।

enter image description here

मुझे किसकी याद आ रही है?

1
Water Cooler v2 26 अगस्त 2016, 13:01

1 उत्तर

सबसे बढ़िया उत्तर

आपका लेबल एक पैनल के अंदर है जो डायलॉग के कंटेंटपेन के अंदर है। तो लेबल को उसके पैरेंट पैनल के लेआउट के साथ प्रबंधित किया जाता है। लेकिन आप इसके लिए कोई विशेष लेआउट सेट नहीं करते हैं, तो यह एक FlowLayout है, और फिर आपका लेबल टेक्स्ट के प्रकट होने के लिए आवश्यक न्यूनतम आकार के साथ इसमें केंद्रित होता है। फिर लेबल को उसके अपने क्षेत्र में संरेखित छोड़ दिया जाता है, लेकिन यह पैनल में केंद्रित होता है।

या तो पैनल का लेआउट बदलें ताकि उसमें लेबल का विस्तार हो (एक BorderLayout जोड़ें और लेबल को उत्तर, केंद्र या दक्षिण में सेट करें), या उस पैनल को हटा दें जो उपयोगी नहीं लगता (और लेबल को विस्तारित होने दें) सामग्री फलक के दक्षिण में।

statusPanel.setLayout(new BorderLayout());
statusPanel.add(lblStatus,BorderLayout.SOUTH);

या

container.add(lblStatus,BorderLayout.SOUTH);
2
Jean-Baptiste Yunès 26 अगस्त 2016, 13:08