2015-05-25 53 views
-3

我已经创建了一个将在计算机和平板电脑上使用的程序。问题在于,当您按下JCombobox时出现的选项在平板电脑上变得非常小。你如何轻松地在选项之间找到一个小小的差距?还是有其他解决方案来解决这个问题吗? 感谢您的帮助和贡献。JComboBox,在选项之间设置空间

回答

0

您可以为组合框定义自己的列表单元格渲染器,并让该自定义渲染器在所有四面都提供填充。

这是一个小程序,显示了如何。尽管不能在列表中的项目之间放置空格,但列表渲染器将允许您在列表中的数据项周围填充填充,这应该使其更易于选择。 setBorder()是你可以改变你的填充的地方,如果你想多或少。

import java.awt.Component; 
import javax.swing.BorderFactory; 
import javax.swing.ComboBoxModel; 
import javax.swing.DefaultComboBoxModel; 
import javax.swing.JComboBox; 
import javax.swing.JFrame; 
import javax.swing.JList; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 
import javax.swing.ListCellRenderer; 


class CustomComboBoxRenderer extends JTextField implements ListCellRenderer 
{ 
public CustomComboBoxRenderer() 
{ 
    this.setBorder(BorderFactory.createCompoundBorder(this.getBorder(), 
      BorderFactory.createEmptyBorder(15, 0, 10, 0))); 
} 


@Override 
public Component getListCellRendererComponent(JList list, Object value, 
     int index, boolean isSelected, boolean cellHasFocus) { 
    if (isSelected) { 
     setBackground(list.getSelectionBackground()); 
     setForeground(list.getSelectionForeground()); 
    } else { 
     setBackground(list.getBackground()); 
     setForeground(list.getForeground()); 
    } 
    this.setText(value.toString()); 
    return this; 
} 

} 
public class Gui extends JFrame{ 

JPanel panel = new JPanel(); 
String[] data = new String[]{"A","B","C","D","E","F"}; 
ComboBoxModel model = new DefaultComboBoxModel(data); 
JComboBox combo = new JComboBox(model); 
CustomComboBoxRenderer renderer = new CustomComboBoxRenderer(); 

public Gui() 
{ 
    combo.setRenderer(renderer); 
    JPanel content = new JPanel(); 
    content.add(combo); 
    setContentPane(content); 
    pack(); 
    setLocation(300,300); 
    this.setVisible(true); 
    this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
} 

public static void main(String[] args) 
{ 
    new Gui(); 
} 

} 
+0

这只是可能的工作。你有一个如何做到这一点的例子吗? @swingMan – Dambakk

+0

太棒了!这太棒了!现在我今晚有事要玩! ;)谢谢@swingMan – Dambakk

+0

它完美的作品!非常感谢! @swingMan – Dambakk