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;