Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取数据传输到的组件的值?_Java_Swing_Drag And Drop_Layout Manager_Null Layout Manager - Fatal编程技术网

Java 如何获取数据传输到的组件的值?

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)在开始的时候,它们出现

当您将一个jlabel(B)拖到另一个jlabel上时,我使用传输处理程序将文本从一个jlabel(a)传输到另一个jlabel。我把B上的文字改成A的文字,但是在你把文字放到B上之前,有没有办法确定B的文字是什么

这就是改变文本的原因,相当简单。 但我只想在某些条件下更改B的文本 公共无效鼠标按下(MouseEvent e) { JComponent comp=(JComponent)e.getSource()

所以我尝试覆盖导入数据。它的作用是我有两张卡(jlabel)在开始的时候,它们出现在一个空布局的起始位置,所以如果一张牌被拖到另一张牌上,底部的牌会回到它的起始位置,这就是home1和home2所代表的位置。这是可行的,但我希望文本变为顶部牌的文本,但这不起作用,那么有没有办法得到o的值要拖动到的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;
            }
        };