Java 如何获取数据传输到的组件的值?
当您将一个jlabel(B)拖到另一个jlabel上时,我使用传输处理程序将文本从一个jlabel(a)传输到另一个jlabel。我把B上的文字改成A的文字,但是在你把文字放到B上之前,有没有办法确定B的文字是什么 这就是改变文本的原因,相当简单。 但我只想在某些条件下更改B的文本 公共无效鼠标按下(MouseEvent e) { JComponent comp=(JComponent)e.getSource() 所以我尝试覆盖导入数据。它的作用是我有两张卡(jlabel)在开始的时候,它们出现在一个空布局的起始位置,所以如果一张牌被拖到另一张牌上,底部的牌会回到它的起始位置,这就是home1和home2所代表的位置。这是可行的,但我希望文本变为顶部牌的文本,但这不起作用,那么有没有办法得到o的值要拖动到的jlabel上Java 如何获取数据传输到的组件的值?,java,swing,drag-and-drop,layout-manager,null-layout-manager,Java,Swing,Drag And Drop,Layout Manager,Null Layout Manager,当您将一个jlabel(B)拖到另一个jlabel上时,我使用传输处理程序将文本从一个jlabel(a)传输到另一个jlabel。我把B上的文字改成A的文字,但是在你把文字放到B上之前,有没有办法确定B的文字是什么 这就是改变文本的原因,相当简单。 但我只想在某些条件下更改B的文本 公共无效鼠标按下(MouseEvent e) { JComponent comp=(JComponent)e.getSource() 所以我尝试覆盖导入数据。它的作用是我有两张卡(jlabel)在开始的时候,它们出现
TransferHandler transfer = new TransferHandler("text"){
JComponent sourced;
Transferable datad;
@Override
protected void exportDone(JComponent source, Transferable data, int action) {
if (action == MOVE){
((JLabel) source).setText("");
sourced = source;
datad = data;
}
}
@Override
public int getSourceActions(JComponent c) {
return COPY | MOVE;
}
@Override
public boolean importData(JComponent comp, Transferable t)
{
if( !((JLabel)comp).getText().equals(""))
{
String text = ((JLabel)comp).getText();
if(text.equals(String.valueOf(card1)) )
{
card1.setBounds(home1);
card1.setVisible(true);
}
if(text.equals(String.valueOf(card2)) )
{
card2.setBounds(home2);
card2.setVisible(true);
}
}
return true;
}
};
完整的代码在这里为了更快地获得更好的帮助,请发布一条消息。“它们以空布局显示在起始位置…”这不是个好兆头。看看吧。在实际删除之前,实际数据可能仍然不可用,但我只有在Mac OSOk下从外部源拖动文件时才体验到这一点。这是我的完整代码。除了将一张卡拖动到一张操作卡p中之外,大多数操作都有效鞋带,你不能把一个拖到另一个。
TransferHandler transfer = new TransferHandler("text"){
JComponent sourced;
Transferable datad;
@Override
protected void exportDone(JComponent source, Transferable data, int action) {
if (action == MOVE){
((JLabel) source).setText("");
sourced = source;
datad = data;
}
}
@Override
public int getSourceActions(JComponent c) {
return COPY | MOVE;
}
@Override
public boolean importData(JComponent comp, Transferable t)
{
if( !((JLabel)comp).getText().equals(""))
{
String text = ((JLabel)comp).getText();
if(text.equals(String.valueOf(card1)) )
{
card1.setBounds(home1);
card1.setVisible(true);
}
if(text.equals(String.valueOf(card2)) )
{
card2.setBounds(home2);
card2.setVisible(true);
}
}
return true;
}
};