カスタムオブジェクトのArrayListを含むJListがあり、ドラッグ&ドロップをフィールドに作成しようとしています。 Transferableでオブジェクトをパッケージ化して受け取る方法を理解できません。JListからJLabelにカスタムオブジェクトをドラッグアンドドロップ
これを約限り私が得ているようです:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.util.*;
public class FlightProjectInterface extends JFrame{
//create GUI Objects
private JFrame primaryFrame;
private JPanel createFlightPanel;
private JPanel aircraftLayout;
private JList personsJList, personsOnFlightJList;
private JTextField pilotLabel, coPilotLabel, backseat1Label, backseat2Label;
public FlightProjectInterface(){
//establish frame
super("Create Flight");
setLayout(new FlowLayout());
//aircraftPanel
aircraftLayout = new JPanel();
aircraftLayout.setLayout(new GridLayout(2,2));
pilotLabel = new JTextField("Drag Pilot Here");
//build person load list
DefaultListModel listModel = new DefaultListModel();
for (Person person : Database.persons)
listModel.addElement(person);
personsJList = new JList(listModel);
personsJList.setVisibleRowCount(5);
personsJList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
personsJList.setDragEnabled(true);
add(new JScrollPane(personsJList));
aircraftLayout.add(pilotLabel);
add(aircraftLayout);
}//end constructor
}
明確化:私は悩みのJListからオブジェクトの選択を取って、それのうちのTransferableを作成することです。上のコードでは、オブジェクトのtoString表現がテキストフィールドに貼り付けられているため、ドロップされた場所からオブジェクトデータを取得することはできません。オブジェクト自体を「パッケージ化」して、オブジェクト自体をGUIから参照できるプレースホルダにドロップするにはどうすればよいですか?
理想的には、それぞれドロップ可能なオブジェクトを含む4つのフィールドがあります。削除された人物はリストから削除されますが、置き換えられた場合はリストに戻されます。
*「Transferableでオブジェクトをパッケージ化して受け取る方法がわかりません」* [ドラッグアンドドロップとデータ転送](http://docs.oracle.com/javase/tutorial)を参照してください。 /uiswing/dnd/index.html)&あなたが試みをしたときに私たちに戻ってきて、特定の質問をすることができます。 –
私は今数時間それを読んできました。私は、JListからオブジェクトの選択を受け取り、転送可能なものを作成するのに問題があります。上記のコードでは、オブジェクトのtoString表現がテキストフィールドに貼り付けられているため、ドロップされた場所からオブジェクトデータを取得することはできません。 –
'シンボルを見つけることができません シンボル:変数データベース 場所:class FlightProjectInterface' - すぐに役立つように、[SSCCE](http://sscce.org/)を投稿してください。 –