سؤال

هل تعرف أي طريقة لإزالة الحدود من Jcombobox في جافا؟ أحاول التعليمة البرمجية التالية

public class ComboFrame extends JFrame {
    public ComboFrame() {
        JPanel container = new JPanel();

        JComboBox cmb = new JComboBox(new String[] { "one", "two" });
        cmb.setBorder(BorderFactory.createEmptyBorder());
        container.add(cmb);

        getContentPane().add(container);
        pack();
    }
}

و

public static void main(String[] args) throws Exception {
    UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            new ComboFrame().setVisible(true);
        }
    });
}

لا تسأل لماذا يرغب شخص ما في إزالة الحدود من كومبوبكس ... أعتقد أنه لا معنى كبير، لكن هذه هي الطريقة التي يريدها، وحصلت على فضولية حقا إذا كان يمكن القيام به. حاولت عدة حيل، لكن لا شيء منهم يعمل.

الأكثر فعالية كان تغيير واجهة المستخدم مع

cmb.setUI(new BasicComboBoxUI());

هذا يجعل الحدود يذهب بعيدا، ولكن يغير L & F، وأحتاج إلى الحفاظ على Windows L & F إذا كان ذلك ممكنا.

شكرا.

هل كانت مفيدة؟

المحلول

لقد فعلت الكثير من البحث ووجدت هذا الخطأ

حاولت ذلك بنفسي ويبدو أنها تؤثر على الحدود. قد ترغب في تجربة واحدة أو كلي كتل التعليمات البرمجية التالية بنفسك.

for (int i = 0; i < combo.getComponentCount(); i++) 
{
    if (combo.getComponent(i) instanceof JComponent) {
        ((JComponent) combo.getComponent(i)).setBorder(new EmptyBorder(0, 0,0,0));
    }


    if (combo.getComponent(i) instanceof AbstractButton) {
        ((AbstractButton) combo.getComponent(i)).setBorderPainted(false);
    }
}

من المهم ملاحظة أنه في أسفل إدخال الأخطاء، يمكنك قراءة ما يلي:

يحافظ JButton على حدوده الخاصة حتى jComponent paintorder () و PaintComponent () ليس لديه وعي حدود Jcombobox.

حظ سعيد،

من جديد

نصائح أخرى

إذا كنت ترغب في استخدام Windows L & F، فيمكنك القيام به cmd.setUI(new WindowsComboBoxUI());ومع ذلك، فأنت تريد أن تكون قادرا على استخدام أي L & F، فقد تكون أفضل حالا باستخدام الحل الذي اقترحه Jeach.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top