我想创建JComboBox
类似于Firefox的URL文本框的控件.有谁知道如何自定义文本域JComboBox
.我想在ALIGN.HORIZONTAL_RIGHT
附近的箭头按钮上添加一些图标JComboBox
感谢您的详细解释.实际上我将组合DefaultListCellRenderer
并将图标添加到组合框,如下面的代码
import java.awt.Dimension;
import java.awt.Insets;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
public class Main extends JFrame {
public Main() {
// Create icon "C"
JButton jb = new JButton("C");
jb.setMargin(new Insets(0, 0, 0, 0));
jb.setBounds(245, 2, 18, 18);
// Create combo box
String[] languages = new String[]{"Java", "C#", "PHP"};
JComboBox jc = new JComboBox(languages);
// jc.setEditable(true);
jc.add(jb);
getContentPane().add(jc);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(new Dimension(300, 58));
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
final Main main = new Main();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
main.setVisible(true);
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
但是当我放jc.setEditable(true)
; 组合编辑隐藏了我的图标.我正在考虑另一种模拟Firefox真棒的方法.你对此有什么想法吗?
要更改组件的呈现方式,通常可以使用所谓的Renderer
s.
对于组合框,请查看如何创建自定义组合框渲染器.只需快速浏览一下,但对于您的情况,简单的配置DefaultListCellRenderer
可能就足够了,因为您可以设置JLabel
属性以将文本定位到图像.如果没有,只需从中扩展即可.
还要记住,您必须设置一个包含图标的模型,以便组合框渲染器可以获取它 - 可能也想要自定义ComboBoxModel
,具体取决于您的数据对象.