-3
我已经创建了一个将在计算机和平板电脑上使用的程序。问题在于,当您按下JCombobox时出现的选项在平板电脑上变得非常小。你如何轻松地在选项之间找到一个小小的差距?还是有其他解决方案来解决这个问题吗? 感谢您的帮助和贡献。JComboBox,在选项之间设置空间
我已经创建了一个将在计算机和平板电脑上使用的程序。问题在于,当您按下JCombobox时出现的选项在平板电脑上变得非常小。你如何轻松地在选项之间找到一个小小的差距?还是有其他解决方案来解决这个问题吗? 感谢您的帮助和贡献。JComboBox,在选项之间设置空间
您可以为组合框定义自己的列表单元格渲染器,并让该自定义渲染器在所有四面都提供填充。
这是一个小程序,显示了如何。尽管不能在列表中的项目之间放置空格,但列表渲染器将允许您在列表中的数据项周围填充填充,这应该使其更易于选择。 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();
}
}
这只是可能的工作。你有一个如何做到这一点的例子吗? @swingMan – Dambakk
太棒了!这太棒了!现在我今晚有事要玩! ;)谢谢@swingMan – Dambakk
它完美的作品!非常感谢! @swingMan – Dambakk