【问题标题】:How to reset panel look and feel in java? [duplicate]如何在java中重置面板外观? [复制]
【发布时间】:2012-11-17 20:20:47
【问题描述】:

可能重复:
Panel losing color

当我单击激活文件选择器的按钮并添加生成的文件时,面板颜色会消失,因为使用 uimanager 将文件选择器显示为 Windows 选择器。

import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.filechooser.FileSystemView;
import javax.swing.JFileChooser;
import javax.swing.plaf.FileChooserUI;

@SuppressWarnings("serial")
public class pan extends JPanel implements DropTargetListener {

    private DefaultListModel listModel = new DefaultListModel();
    private JButton addbutton;
    private JButton removebutton;
    private JButton selectbutton;
    private JButton lockbutton;
    private JButton unlockbutton;

    /**
     * Create the panel.
     */
    public pan() {
        setLayout(null);
        addbutton = new JButton("New button");
        addbutton.setBounds(10, 10, 90, 100);
        addbutton.addActionListener(new Action());
        add(addbutton);

        removebutton = new JButton("New button");
        removebutton.setBounds(110, 10, 90, 100);
        add(removebutton);

        selectbutton = new JButton("New button");
        selectbutton.setBounds(210, 10, 90, 100);
        add(selectbutton);

        lockbutton = new JButton("New button");
        lockbutton.setBounds(310, 10, 90, 100);
        add(lockbutton);

        unlockbutton = new JButton("New button");
        unlockbutton.setBounds(410, 10, 90, 100);
        add(unlockbutton);

        JLabel headerLabel = new JLabel("New label");
        headerLabel.setBorder(new BevelBorder(BevelBorder.RAISED,
            Color.LIGHT_GRAY, Color.GRAY, null, null));
        headerLabel.setUI(new ModifLabelUI());
        headerLabel.setBounds(10, 120, 635, 30);
        add(headerLabel);   
    }


    class Action implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            if(e.getSource()==addbutton){
                JFileChooser filechooser=new JFileChooser();
                filechooser.setMultiSelectionEnabled(true);             
                try {
    UIManager.setLookAndFeel(UIManager
            .getSystemLookAndFeelClassName());
            } catch (ClassNotFoundException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } catch (InstantiationException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } catch (IllegalAccessException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } catch (UnsupportedLookAndFeelException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }

                filechooser.updateUI();
                filechooser.showOpenDialog(new pan());
                File files=filechooser.getSelectedFile();
                listModel.addElement(files);
        }       
    }
}

如果你删除 UImanger,问题就消失了

【问题讨论】:

    标签: java swing jpanel look-and-feel uimanager


    【解决方案1】:

    根据The documentation ...您可能需要确保首先将 UI 管理器设置为使用您想要使用的外观...

    编辑具体例子@see This Post

    public static void main(String[] args) {
        try {
                // Set System L&F
            UIManager.setLookAndFeel(
                UIManager.getSystemLookAndFeelClassName());
        } 
        catch (UnsupportedLookAndFeelException e) {
           // handle exception
        }
        catch (ClassNotFoundException e) {
           // handle exception
        }
        catch (InstantiationException e) {
           // handle exception
        }
        catch (IllegalAccessException e) {
           // handle exception
        }
    
        new SwingApplication(); //Create and show the GUI.
    }
    

    【讨论】:

    • 你对其他事情的回答你测试代码并看到问题!!
    • @YaserHar 对不起?这是一个问题吗?
    • 别担心测试制作框架和测试代码然后调用按添加按钮并添加任何文件然后你会看到面板颜色消失了
    • 如何让面板恢复其外观,谢谢
    • 同样来自 documentation 引用,可以通过在相关组件上调用 SwingUtilities.updateComponentTreeUI(frame); 来更改启动后的外观。
    猜你喜欢
    • 2012-10-19
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多