【发布时间】:2018-01-28 12:01:54
【问题描述】:
所以这是我第一次尝试使用CellEditors 为我的JTable 嵌入JComboBox 和JSpinner。一切正常,我可以看到JComboBox 模型中的值以及JSpinner 的模型值。
但是,我注意到,只要我单击具有 JComboBox 的 JTable 列,它就会始终显示 JComboBox 的值。
它对用户不是很友好,因为我认为用户更愿意双击JTable 的列来获取下拉框值并从中选择值而不是单击。
如何将JComboBox 的行为更改为仅在双击 时显示自己?
我想我应该将MouseListener 应用到JComboBox,但我不知道下一步该做什么。
这是我到目前为止所写的。
public class ScheduleDayCellEditor extends DefaultCellEditor{
private JComboBox jcmbDays;
private JTable jtblSchedule;
private DefaultComboBoxModel model;
public ScheduleDayCellEditor(){
super(new JComboBox());
model = new DefaultComboBoxModel(new String[]{"Mon","Tue","Wed","Thu","Fri"});
jcmbDays = new JComboBox(model);
jcmbDays.setEditable(false);
jcmbDays.setSelectedIndex(-1);
jcmbDays.addMouseListener(new MouseListener() {
@Override
public void mouseClicked(MouseEvent e) {
if(e.getClickCount() == 2){
//? ? ? ?
}
}
@Override
public void mousePressed(MouseEvent e) {
}
@Override
public void mouseReleased(MouseEvent e) {
}
@Override
public void mouseEntered(MouseEvent e) {
}
@Override
public void mouseExited(MouseEvent e) {
}
});
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
return jcmbDays;
}
@Override
public Object getCellEditorValue() {
return jcmbDays.getSelectedItem(); //To change body of generated methods, choose Tools | Templates.
}
这是附加说明的屏幕截图。
如果有任何帮助,我将不胜感激。
谢谢。
【问题讨论】:
标签: java swing jtable tablecelleditor