我有以下功能:
@Override
public Component getTableCellRendererComponent(
JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column)
{
if( value instanceof JTextField ) {
return ( JTextField )value;
} else if( value instanceof JComboBox ) {
return ( JComboBox )value;
} else if( value instanceof JCheckBox ) {
return ( JCheckBox )value;
}
return this;
}
我想知道是否有可能使它更通用,如下所示:
@Override
public Component getTableCellRendererComponent(
JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column)
{
return ( CastToWhatItShouldBeCasted )value;
}
或其他让我在那里使用任何组件类型而不添加下一个if语句的东西。
答案 0 :(得分:4)
这取决于你想要什么。这将编译:
if (value instanceof Component)
return (Component) value;
return this;
但意思会有所改变。它还将返回除给定三个之外的其他组件的值。
这相当于你的代码,但有点短:
if (value instanceof JTextField || value instanceof JComboBox|| value instanceof JCheckBox )
return (Component) value;
return this;
答案 1 :(得分:0)
也许在你写的时候尝试使用java泛型?如果是这样,您的代码将如下所示:
@Override
public <T extends Component> T getTableCellRendererComponent(
JTable table, T value,
boolean isSelected, boolean hasFocus,
int row, int column)
{
return value;
}