Java 如何在swing组件(对于combobox)的类中使用toString两次?
我知道错了,这是我的密码。我有两种卡基和Vari组合。我正在重写这两个变量Java 如何在swing组件(对于combobox)的类中使用toString两次?,java,eclipse,swing,combobox,tostring,Java,Eclipse,Swing,Combobox,Tostring,我知道错了,这是我的密码。我有两种卡基和Vari组合。我正在重写这两个变量 public class Ucuslar { private String KalkisYeri; private String VarisYeri; @Override public String toString() { return KalkisYeri; } public String toString(){ return Varis
public class Ucuslar {
private String KalkisYeri;
private String VarisYeri;
@Override
public String toString() {
return KalkisYeri;
}
public String toString(){
return VarisYeri;
}
}
如何在swing Components上的类中使用toString 2两次
组合框
java不允许这样做,重写意味着您要编写超类或接口提供的方法的自定义实现
您需要的可以/必须通过另一种方式完成,您可以为这两个变量定义getter
class Ucuslar {
private String KalkisYeri;
private String VarisYeri;
public String getKalkisString() {
return KalkisYeri;
}
public String getVarisString(){
return VarisYeri;
}
}
如何在swing Components上的类中使用toString 2两次
组合框
java不允许这样做,重写意味着您要编写超类或接口提供的方法的自定义实现
您需要的可以/必须通过另一种方式完成,您可以为这两个变量定义getter
class Ucuslar {
private String KalkisYeri;
private String VarisYeri;
public String getKalkisString() {
return KalkisYeri;
}
public String getVarisString(){
return VarisYeri;
}
}
基本答案是,不能用相同的签名实现两个方法 对这个问题的较长回答围绕着需求。您可以将对象分为两个对象,每个属性一个,然后可以覆盖每个属性的toString 另一个解决方案是实现一个自定义ListCellRenders,它可以被设计为显示对象的一个属性,例如
public class Ucuslar {
private String KalkisYeri;
private String VarisYeri;
public String getKalkisYeri() {
return KalkisYeri;
}
public String getVarisYeri() {
return VarisYeri;
}
}
public class UcuslarListCellRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
if (value instanceof Ucuslar) {
configure((Ucuslar)value);
}
return this;
}
protected void configure(Ucuslar value) {
}
}
public class KalkisYeriListCellRenderer extends UcuslarListCellRenderer {
protected void configure(Ucuslar value) {
setText(value.getKalkisYeri());
}
}
public class VarisYeriListCellRenderer extends UcuslarListCellRenderer {
protected void configure(Ucuslar value) {
setText(value.getKalkisYeri());
}
}
有关更多详细信息,请参见。基本答案是,不能使用相同的签名实现两个方法 对这个问题的较长回答围绕着需求。您可以将对象分为两个对象,每个属性一个,然后可以覆盖每个属性的toString 另一个解决方案是实现一个自定义ListCellRenders,它可以被设计为显示对象的一个属性,例如
public class Ucuslar {
private String KalkisYeri;
private String VarisYeri;
public String getKalkisYeri() {
return KalkisYeri;
}
public String getVarisYeri() {
return VarisYeri;
}
}
public class UcuslarListCellRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList<?> list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
if (value instanceof Ucuslar) {
configure((Ucuslar)value);
}
return this;
}
protected void configure(Ucuslar value) {
}
}
public class KalkisYeriListCellRenderer extends UcuslarListCellRenderer {
protected void configure(Ucuslar value) {
setText(value.getKalkisYeri());
}
}
public class VarisYeriListCellRenderer extends UcuslarListCellRenderer {
protected void configure(Ucuslar value) {
setText(value.getKalkisYeri());
}
}
有关更多详细信息,请参见您的意思是,该代码未编译!!您想做什么?您不需要重写每个变量的toString。对于类you can't,它只做了一次,这是我不建议为此使用它的众多原因中的一个,将它留给字符串进行调试。相反,您需要提供一个ListCellRenderer,根据您想要显示它的方式来格式化值。我想两次应用到String my fields VarisYeri和kalkisyeriUse getters:public String getKalkisYeri{return KalkisYeri;}和String getVarisYeri{return VarisYeri;}这是什么意思,代码没有编译!!您想做什么?您不需要重写每个变量的toString。对于类you can't,它只做了一次,这是我不建议为此使用它的众多原因中的一个,将它留给字符串进行调试。相反,您需要提供一个ListCellRenderer,根据您希望显示iti的方式来格式化值。我希望两次应用到字符串my FieldsArisyeri和kalkisyeriUse getters:public String getKalkisYeri{return KalkisYeri;}和String getVarisYeri{return VarisYeri;}