Hallo,
habe folgendes Problem. Und zwar habe ich ein JPanel erstellt und möchte nun per drag and drop Dateien dort reinziehen können. Also, so wie ich es zur Zeit mache funktioniert es einzeln ganz gut. nur wenn ich meinen "DnD" Code in die Klasse implemntieren will funktioniert es leider nicht mehr.
Es erscheint beim compilieren rechts neben dem Jpanel ein weiteres kleines Fenster in das ich auch dateien reinschieben kann. Da habe ich mir gedacht, dass ich das JScrollPane im Jpanel adde. Soweit sieht das auch gut aus nur leider funktoiniert dann das reinschieben der dateien nicht mehr.
Für Hilfe wäre ich sehr Dankbar!
habe folgendes Problem. Und zwar habe ich ein JPanel erstellt und möchte nun per drag and drop Dateien dort reinziehen können. Also, so wie ich es zur Zeit mache funktioniert es einzeln ganz gut. nur wenn ich meinen "DnD" Code in die Klasse implemntieren will funktioniert es leider nicht mehr.
Java:
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Image;
import java.awt.Insets;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetAdapter;
import java.awt.dnd.DropTargetDropEvent;
import java.awt.dnd.DropTargetListener;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.imageio.ImageIO;
import javax.swing.AbstractButton;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.DefaultListModel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingConstants;
public class Infoablage extends JPanel {
private BackgroundPanel backgroundPanel;
private Image infoHintergrund;
private JButton zurueck;
private JButton hinzufuegen;
private JLabel lblhead;
private JPanel pnl;
private CardLayout c5;
private JPanel panelcontainer;
private JList dropFileList;
private DropTargetListener dropHandler;
public Infoablage (CardLayout c5 , JPanel panelcontainer)
{
this.c5 = c5;
this.panelcontainer = panelcontainer;
createInfoAblageWidgets();
layoutInfoAblageWidgets();
dropFileList = new JList(new DefaultListModel());
dropFileList.setDragEnabled(true);
DropTargetListener dropHandler = new DropTargetAdapter() {
@Override
public void drop(final DropTargetDropEvent e) {
try {
Transferable tr = e.getTransferable();
if (tr.isDataFlavorSupported(DataFlavor.javaFileListFlavor)) {
e.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE);
List<File> files = (List) tr.getTransferData(DataFlavor.javaFileListFlavor);
for (File file : files) {
if (file.isFile()) {
((DefaultListModel) dropFileList.getModel()).addElement("<file> " + file.getName());
}
}
e.getDropTargetContext().dropComplete(true);
} else {
System.err.println("DataFlavor.javaFileListFlavor is not supported, rejected");
e.rejectDrop();
}
} catch (IOException ex) {
System.err.println("IOException");
ex.printStackTrace();
e.rejectDrop();
} catch (UnsupportedFlavorException ex) {
System.err.println("UnsupportedFlavorException");
ex.printStackTrace();
e.rejectDrop();
}
}
};
//connect dropHandler to dropFileList:
DropTarget dt = new DropTarget(dropFileList, dropHandler);
add(new JScrollPane(dropFileList));
}
private void createInfoAblageWidgets() {
try{
infoHintergrund = ImageIO.read(getClass().getResourceAsStream("MenueHintergrund.jpg"));
backgroundPanel = new BackgroundPanel(infoHintergrund);
backgroundPanel.setLayout(new BoxLayout(backgroundPanel, BoxLayout.Y_AXIS));
DropTarget dt = new DropTarget(dropFileList, dropHandler);
add(new JScrollPane(dropFileList));
lblhead = new JLabel ("Info-Ablage");
lblhead.setFont(new Font("SWRomnt", Font.PLAIN, 72));
lblhead.setForeground(Color.BLACK);
lblhead.setOpaque(false);
lblhead.setAlignmentX(CENTER_ALIGNMENT);
zurueck = new JButton();
Image infoHintergrund = ImageIO.read(getClass().getResource("back.png"));
zurueck.setIcon(new ImageIcon(infoHintergrund));
zurueck.setBorder(null);
zurueck.setContentAreaFilled(false);
zurueck.setAlignmentX(CENTER_ALIGNMENT);
hinzufuegen = new JButton("Datei hinzufügen");
hinzufuegen.setForeground(Color.BLACK);
hinzufuegen.setFont(new Font ("SWRomnt", Font.PLAIN, 30));
hinzufuegen.setBorder(null);
hinzufuegen.setBorderPainted(false);
hinzufuegen.setAlignmentX(CENTER_ALIGNMENT);
} catch (IOException e) {
e.printStackTrace();
}
}
private void layoutInfoAblageWidgets() {
backgroundPanel.add(lblhead);
backgroundPanel.add(hinzufuegen);
backgroundPanel.add(new JScrollPane(dropFileList));
backgroundPanel.add( zurueck);
backgroundPanel.setPreferredSize(new Dimension(infoHintergrund
.getWidth(null), infoHintergrund.getHeight(null)));
add(backgroundPanel);
zurueck.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent arg0){
CardLayout c5 = (CardLayout) panelcontainer.getLayout();
c5.show(panelcontainer, "3");
}
});
}
}
Für Hilfe wäre ich sehr Dankbar!