Hey,
Ich habe ein Problem, un zwar gibt der getter ImageSelection.getName() immer nur "null" zurück und ich weiß nicht warum.
Obwohl ich in der unteren Klasse den String "name" zugewiesen habe.
Vielleicht kann mir einer helfen
PS: Bin noch ein relativer Neuling, deswegen sorry sollte ich irgendwas nicht sofort verstehen ^^
Ich habe ein Problem, un zwar gibt der getter ImageSelection.getName() immer nur "null" zurück und ich weiß nicht warum.
Obwohl ich in der unteren Klasse den String "name" zugewiesen habe.
Vielleicht kann mir einer helfen
PS: Bin noch ein relativer Neuling, deswegen sorry sollte ich irgendwas nicht sofort verstehen ^^
Java:
package test;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.util.Scanner;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;
import javax.swing.border.Border;
import javax.swing.border.LineBorder;
public class DragImage {
public static void main(String args[]) {
Border border = LineBorder.createGrayLineBorder();
Font labelFont = new Font("Arial", Font.CENTER_BASELINE, 130);
JFrame frame = new JFrame();
JLabel jLabel = new JLabel("+", SwingConstants.CENTER);
JButton jButton = new JButton("test");
jLabel.setTransferHandler(new ImageSelection());
String name = ImageSelection.getName();
frame.setVisible(true);
frame.setSize(900, 700);
frame.setTitle("Automatisierung");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setLayout(null);
String adress = "";
Icon icon = new ImageIcon(adress);
jLabel.setBounds(10, 8, 134, 188);
jLabel.setFont(labelFont);
jLabel.setVisible(true);
jLabel.setBorder(border);
jLabel.setIcon(icon);
jButton.setBounds(300, 8, 134, 188);
jButton.setVisible(true);
jButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("test " + name);
}
});
frame.add(jButton);
frame.add(jLabel);
}
}
Java:
package test;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.io.IOException;
import javax.swing.AbstractButton;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.TransferHandler;
class ImageSelection extends TransferHandler implements Transferable {
static String name;
private static final long serialVersionUID = 3181571469332838353L;
private static final DataFlavor flavors[] = { DataFlavor.javaFileListFlavor };
@Override
public boolean canImport(JComponent comp, DataFlavor flavor[]) {
if (!(comp instanceof JLabel) && !(comp instanceof AbstractButton)) {
return false;
}
for (int i = 0, n = flavor.length; i < n; i++) {
for (int j = 0, m = flavors.length; j < m; j++) {
if (flavor[i].equals(flavors[j])) {
return true;
}
}
}
return false;
}
@Override
/*
* This will set the name.
*/
public boolean importData(JComponent comp, Transferable t) {
try {
name = String.valueOf(t.getTransferData(flavors[0]));
System.out.println(name);
} catch (UnsupportedFlavorException | IOException e) {
e.printStackTrace();
}
return false;
}
public static String getName() {
return name;
}
@Override
public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
// TODO Auto-generated method stub
return false;
}
@Override
public DataFlavor[] getTransferDataFlavors() {
// TODO Auto-generated method stub
return null;
}
@Override
public boolean isDataFlavorSupported(DataFlavor flavor) {
// TODO Auto-generated method stub
return false;
}
}