如何摆脱JCombobox中的蓝色突出显示?

问题描述

JComboBox的“内容”窗口具有蓝色突出显示,我不知道该如何消除,请帮忙。

以下是问题的一个示例:

let urls = [URL1,URL2,URL3,....]
for url in urls {
    AF.download(url,method: .get,parameters: nil,encoding: URLEncoding.default,headers:
    headers,interceptor: nil,to: destination).response { (responseData) in

        self.urlLoad.append(responseData.fileURL!)
        completion(self.urlLoad)

    }

}

解决方法

组合框是一个复杂的组件,在内部使用多个组件。 UI决定了组件之间如何交互。

例如,将您的代码更改为以下内容:

JComboBox combox;
combox = new JComboBox(model);
combox.setBorder( new LineBorder(Color.YELLOW) );
BasicComboBoxRenderer renderer = new BasicComboBoxRenderer();
renderer.setBorder( new LineBorder(Color.RED) );
combox.setRenderer(renderer);

您会发现蓝色突出显示框不是组合框或其渲染的边框,这意味着还有另一个我们无法访问的内部容器。

如果您确实想解决问题,则需要自定义MetalComboBoxUI类,这绝非易事,因为许多绘画方法都是私有的。但是,请查看该类的代码,看看是否可以完成。

您的代码的其他问题:

  1. 请勿使用updateUI()。更改LAF时,该方法在Swing中内部调用。您没有更改LAF

  2. 应在框架可见之前将组件添加到框架。这将消除对updateUI()的需要。