Java 找不到适用于setListData(对象[])的方法

Java 找不到适用于setListData(对象[])的方法,java,Java,我对这段代码有一个问题,当我试图编译它时,我得到一个错误和一个警告。错误是: MarcoSeleccionMultiple.java:43: error: no suitable method found for setListData(Object[]) 警告是: MarcoSeleccionMultiple.java:13: warning: [serial] serializable class MarcoSelecc ionMultiple has no definition of s

我对这段代码有一个问题,当我试图编译它时,我得到一个错误和一个警告。错误是:

MarcoSeleccionMultiple.java:43: error: no suitable method found for setListData(Object[])
警告是:

MarcoSeleccionMultiple.java:13: warning: [serial] serializable class MarcoSelecc
ionMultiple has no definition of serialVersionUID
我希望你能帮助我。谢谢

// PruebaSeleccionMultiple.java
// Pruebe de MarcoSeleccionMultiple.java
import javax.swing.JFrame;

public class PruebaSeleccionMultiple
{
    public static void main( String[] args )
    {
        MarcoSeleccionMultiple marcoSeleccionMultiple = 
            new MarcoSeleccionMultiple();

        marcoSeleccionMultiple.setDefaultCloseOperation( 
            JFrame.EXIT_ON_CLOSE );
        marcoSeleccionMultiple.setSize( 350, 140 ); // establece el tamaño del marco
        marcoSeleccionMultiple.setVisible( true ); // muestra el marco
    } // fin de main
} // fin de la clase PruebaSeleccionMultiple
这是另一类:

// MarcoSeleccionMultiple.java
// Copiar elementos de un objeto List a otro
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JButton;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import java.util.ArrayList;

public class MarcoSeleccionMultiple extends JFrame
{
    private JList<String> listaJListColores; // lista para guardar los nombres de los colores
    private JList<String> listaJListCopia; // lista en la que se van a copiar los nombres de los colores
    private JButton botonJButtonCopiar; // botón para copiar los nombres seleccionados
    private final String[] nombresColores = { "Negro", "Azul", "Cyan",
        "Gris oscuro", "Gris", "Verde", "Gris claro", "Magenta", "Naranja",
        "Rosa", "Rojo", "Blanco", "Amarillo" };

    // constructor de MarcoSeleccionMultiple
    public MarcoSeleccionMultiple()
    {
        super( "Listas de selección múltiple" );
        setLayout( new FlowLayout() ); // establece el esquema del marco

        listaJListColores = new JList<String>( nombresColores ); // contiene los nombres de todos los colores
        listaJListColores.setVisibleRowCount( 5 ); // muestra cinco filas
        listaJListColores.setSelectionMode( 
            ListSelectionModel.MULTIPLE_INTERVAL_SELECTION );
        add( new JScrollPane( listaJListColores ) ); // agrega lista con panel de desplazamiento 

        botonJButtonCopiar = new JButton( "Copiar >>>" ); // crea botón para copiar
        botonJButtonCopiar.addActionListener( 

            new ActionListener() // clase interna anónima
            {
                // maneja evento de botón
                public void actionPerformed( ActionEvent evento )
                {
                    // coloca los valores seleccionados en listaJListCopia
                    listaJListCopia.setListData( listaJListColores.getSelectedValuesList().toArray() );
                } // fin del método actionPerformed
            } // fin de la clase interna anónima
        ); // fin de la llamada a addActionListener

        add( botonJButtonCopiar ); // agrega el botón copiar a JFrame

        listaJListCopia = new JList<String>(); // crea lista para guardar nombres de colores copiados
        listaJListCopia.setVisibleRowCount( 5 ); // muestra 5 filas
        listaJListCopia.setFixedCellWidth( 100 ); // establece la anchura
        listaJListCopia.setFixedCellHeight( 15 ); // establece la altura
        listaJListCopia.setSelectionMode( 
            ListSelectionModel.SINGLE_INTERVAL_SELECTION );
        add( new JScrollPane( listaJListCopia ) ); // agrega lista con panel de desplazamiento
    } // fin del constructor de MarcoSeleccionMultiple
} // fin de la clase MarcoSeleccionMultiple
//MarcoSeleccionMultiple.java
//列出otro的目标要素副本
导入java.awt.FlowLayout;
导入java.awt.event.ActionListener;
导入java.awt.event.ActionEvent;
导入javax.swing.JFrame;
导入javax.swing.JList;
导入javax.swing.JButton;
导入javax.swing.JScrollPane;
导入javax.swing.ListSelectionModel;
导入java.util.ArrayList;
公共类MarcoSeleccionMultiple扩展JFrame
{
私人JList listaJListColores;//lista para guardar los nombres de los colores
列兵列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队列队
私有按钮Boton按钮Piar;//botón para copiar los nombres seleccionados
私有最终字符串[]nombresColores={“Negro”、“Azul”、“Cyan”,
“格里斯·奥斯库罗”、“格里斯”、“维德”、“格里斯·克拉罗”、“洋红”、“纳兰贾”,
“Rosa”、“Rojo”、“Blanco”、“Amarillo”};
//构造函数de MarcoSeleccionMultiple
公共MarcoSeleccionMultiple()
{
超级(“selección múltiple列表”);
setLayout(新的FlowLayout());//establece el-esquema del marco
listaJListColores=new JList(nombresColores);//继续使用nombres de todos los colores
setVisibleRowCount(5);//muestra cinco filas
ListAjListColors.setSelectionMode(
ListSelectionModel.MULTIPLE\u INTERVAL\u SELECTION);
添加(新的JScrollPane(ListaListColores));//agrega lista con panel de desplazamiento
Botonjbuttoncpaiar=新的JButton(“Copiar>>>”);//crea botón para Copiar
BotonJButtonPiar.addActionListener(
新建ActionListener()//内部事务
{
//波顿事件
已执行的公共无效操作(操作事件事件)
{
//科洛斯瓦洛雷斯酒店
listaJListCopia.setListData(ListaJListColors.getSelectedValuesList().toArray());
}//已执行fin del método操作
}//国际律师协会
)//fin de la llamada a addActionListener
添加(Botonjbuttoncpaiar);//agrega el botón复制JFrame
listaJListCopia=new JList();//crea lista para guardar nombres de colors copiados
setVisibleRowCount(5);//muestra 5 filas
listaJListCopia.setFixedCellWidth(100);//establece la anchura
listaJListCopia.setFixedCellHeight(15);//altura住宅
listaJListCopia.setSelectionMode(
ListSelectionModel.SINGLE\u INTERVAL\u SELECTION);
添加(新的JScrollPane(listaJListCopia));//agrega lista con panel de desplazamiento
}//fin del constructor de MarcoSeleccionMultiple
}//克拉斯马科西翁酒店

让我们看看一些JavaDoc:

Parameters:listData—包含要在列表中显示的项的E数组

在您的例子中,此方法需要一个字符串数组

对象[]toArray()

这意味着,该方法返回一个对象数组。 这就是为什么你会得到提到的例外
setListData
需要一个字符串数组,但您给了他一个对象数组

List
提供了另一种应在此处使用的
toArray
方法:
T[]toArray(T[]a)
。它需要一个数组,它将返回与您在其中指定的数组类型相同的列表

这意味着,要解决您的问题,您应该改变

listaJListCopia.setListData( listaJListColores.getSelectedValuesList().toArray() );

您也可以使用
新字符串[0]
,但这可能会导致另一个警告

现在请注意你的警告:

此警告意味着类
marcoselectionmultiple
实现接口
Serializable
,因为它扩展了类
JFrame
,该类由于扩展类
组件而可序列化。
要修复该警告,请在类中包含变量
serialVersionUID
。例如:

private static final long serialVersionUID = 1L;
您的IDE应该能够为您生成
serialVersionUID
。有关该变量的更多信息,请阅读此JavaDoc:

private static final long serialVersionUID = 1L;