Loading...

JPanelからドラッグアンドドロップで背景の色移動させたい

Javaです。JPanelからドラッグアンドドロップで背景の色移動させたいと思いました。
たとえば、JTextFieldとかには、setDragEnabledメソッドがあったりするのですが、JPanelにはないわけで。
それで、うーんとなやんだわけです。

参考


それで、MouseAdapterを使ってmousePressedの時にTransferHandlerのexportAsDragを使って何とか実現。

以下コード
package dnd;

import java.awt.Color;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.TransferHandler;

public class TestA {

public static void main(String[] args) {
createFrame(Color.BLUE);
createFrame(Color.RED);
}

static JFrame createFrame(final Color c) {
JFrame frame = new JFrame();

frame.setSize(300, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(new JPanel() {
{
add(new JTextField() {
private static final long serialVersionUID = 1L;
{
setDragEnabled(true);
setText("aaaaaaaaaaaaaaaaa");
setTransferHandler(new TransferHandler("background") {
});
}
}
);

setBackground(c);
setTransferHandler(new TransferHandler("background") {
});

addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
JComponent component = (JComponent) e.getSource();
TransferHandler handler = component
.getTransferHandler();
handler
.exportAsDrag(component, e,
TransferHandler.COPY);
}
});
}
} // panel ... end

);
frame.setVisible(true);
return frame;
}

}
リアクション: 
swing 4617434554268557906

コメントを投稿

ホーム item

このブログを検索

Random Posts

Popular Posts

Labels

ADS