久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

在 Java Swing 中啟用 Transfersupport 的 stringFlavor

Enable stringFlavor of Transfersupport in Java Swing(在 Java Swing 中啟用 Transfersupport 的 stringFlavor)
本文介紹了在 Java Swing 中啟用 Transfersupport 的 stringFlavor的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

限時送ChatGPT賬號..

我正在實現將 JLabels 的 Textattribute 拖放到 JTable 的單元格中的功能.所以我為表創(chuàng)建了一個自定義的 TransferHandler.但是每次調用

I am implementing a functionality to Drag and Drop the Textattribute of JLabels into the cells of a JTable. So I've created a custom TransferHandler for the table. But every call of

support.isDataFlavorSupported(DataFlavor.stringFlavor) 

返回假

如何確保我的 TransferHandler 能夠導入字符串?

How can I make sure that my TransferHandler is able to import Strings?

這里是源碼

public class TableHandler extends TransferHandler {
    private static final long serialVersionUID = 1L;

@Override
public boolean canImport(TransferSupport support) {
    if (!support.isDrop()) {
        return false;
    }
    //only Strings
    if(!support.isDataFlavorSupported(DataFlavor.stringFlavor)){
        return false;
    }
    return true;
}

@Override
public boolean importData(TransferSupport support) {
    if (!canImport(support)) {
        return false;
    }

    Transferable tansferable = support.getTransferable();
    String line;
    try {
        line = (String) tansferable
                .getTransferData(DataFlavor.stringFlavor);
    } catch (Exception e) {
        return false;
    }

    JTable.DropLocation dl = (JTable.DropLocation) support
            .getDropLocation();
    int column = dl.getColumn();
    int row = dl.getRow();

    String[] data = line.split(",");
    for (String item : data) {
        if (!item.isEmpty()) {
            table.getTableModel().setValueAt(item, row, column);
        }
    }
    return true;
}
}

推薦答案

檢查這個例子似乎工作正常:

Check this example seems to work fine:

JLabels 的任何拖放之前:

Before any dragging / dropping of JLabels:

單擊并拖動 Hello JLabel 到第一個單元格:

Clicked and dragged Hello JLabel to 1st cell:

在第一個單元格上釋放點擊:

On release of click over the first cell:

import java.awt.BorderLayout;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.dnd.DnDConstants;
import java.awt.dnd.DragGestureEvent;
import java.awt.dnd.DragGestureListener;
import java.awt.dnd.DragSource;
import java.io.IOException;
import javax.swing.DropMode;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.TransferHandler;

public class Test {

    public static void main(String[] args) {
        createAndShowJFrame();
    }

    public static void createAndShowJFrame() {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {

                JFrame frame = createJFrame();
                frame.setVisible(true);

            }
        });
    }

    private static JFrame createJFrame() {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        frame.setTitle("Test");

        JTable table = createJTable();
        JScrollPane js = new JScrollPane(table);

        frame.add(js, BorderLayout.CENTER);

        frame.add(createJLabelPanel(), BorderLayout.SOUTH);

        frame.pack();

        //frame.setResizable(false);//make it un-resizeable
        //frame.setLocationRelativeTo(null);//center JFrame

        return frame;
    }

    private static JTable createJTable() {
        // setup table data
        String[] columns = new String[]{"Foo", "Bar", "Baz", "Quux"};
        String[][] data = new String[][]{{"A", "B", "C", "D"},
            {"1", "2", "3", "4"},
            {"i", "ii", "iii", "iv"}};
        // create table
        final JTable table = new JTable(data, columns);

        // set up drag and drop
        table.setDragEnabled(true);
        table.setDropMode(DropMode.USE_SELECTION);
        table.setFillsViewportHeight(true);

        TransferHandler dnd = new TransferHandler() {
            @Override
            public boolean canImport(TransferSupport support) {
                if (!support.isDrop()) {
                    return false;
                }
                //only Strings
                if (!support.isDataFlavorSupported(DataFlavor.stringFlavor)) {
                    return false;
                }
                return true;
            }

            @Override
            public boolean importData(TransferSupport support) {
                if (!canImport(support)) {
                    return false;
                }

                Transferable tansferable = support.getTransferable();
                String line;
                try {
                    line = (String) tansferable.getTransferData(DataFlavor.stringFlavor);
                } catch (Exception e) {
                    e.printStackTrace();
                    return false;
                }

                JTable.DropLocation dl = (JTable.DropLocation) support.getDropLocation();
                int column = dl.getColumn();
                int row = dl.getRow();

                String[] data = line.split(",");
                for (String item : data) {
                    if (!item.isEmpty()) {
                        table.getModel().setValueAt(item, row, column);
                    }
                }
                return true;
            }
        };
        table.setTransferHandler(dnd);
        table.setPreferredScrollableViewportSize(table.getPreferredSize());
        return table;
    }

    private static JPanel createJLabelPanel() {
        JPanel panel = new JPanel();
        JLabel label1 = new JLabel("Hello");
        JLabel label2 = new JLabel("Yay");
        JLabel label3 = new JLabel("Bye");

        MyDragGestureListener dlistener = new MyDragGestureListener();
        DragSource ds1 = new DragSource();
        ds1.createDefaultDragGestureRecognizer(label1, DnDConstants.ACTION_COPY, dlistener);

        DragSource ds2 = new DragSource();
        ds2.createDefaultDragGestureRecognizer(label2, DnDConstants.ACTION_COPY, dlistener);

        DragSource ds3 = new DragSource();
        ds3.createDefaultDragGestureRecognizer(label3, DnDConstants.ACTION_COPY, dlistener);

        panel.add(label1);
        panel.add(label2);
        panel.add(label3);
        return panel;
    }
}

class MyDragGestureListener implements DragGestureListener {

    @Override
    public void dragGestureRecognized(DragGestureEvent event) {
        JLabel label = (JLabel) event.getComponent();
        final String text = label.getText();


        Transferable transferable = new Transferable() {
            @Override
            public DataFlavor[] getTransferDataFlavors() {
                return new DataFlavor[]{DataFlavor.stringFlavor};
            }

            @Override
            public boolean isDataFlavorSupported(DataFlavor flavor) {
                if (!isDataFlavorSupported(flavor)) {
                    return false;
                }
                return true;
            }

            @Override
            public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {
                return text;
            }
        };
        event.startDrag(null, transferable);
    }
}

這篇關于在 Java Swing 中啟用 Transfersupport 的 stringFlavor的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Parsing an ISO 8601 string local date-time as if in UTC(解析 ISO 8601 字符串本地日期時間,就像在 UTC 中一樣)
How to convert Gregorian string to Gregorian Calendar?(如何將公歷字符串轉換為公歷?)
Java: What/where are the maximum and minimum values of a GregorianCalendar?(Java:GregorianCalendar 的最大值和最小值是什么/在哪里?)
Calendar to Date conversion for dates before 15 Oct 1582. Gregorian to Julian calendar switch(1582 年 10 月 15 日之前日期的日歷到日期轉換.公歷到儒略歷切換)
java Calendar setFirstDayOfWeek not working(java日歷setFirstDayOfWeek不起作用)
Java: getting current Day of the Week value(Java:獲取當前星期幾的值)
主站蜘蛛池模板: 视频在线日韩 | 有码在线 | 一级毛片在线看 | 成人国产在线观看 | 91视频进入| 成人精品免费视频 | 日韩精品一区二区久久 | 免费视频一区二区 | 99爱在线观看 | 亚洲天堂成人在线视频 | 99免费看| 国产婷婷精品av在线 | 麻豆一区二区三区精品视频 | 欧美一级一 | 欧美黑人一级爽快片淫片高清 | 在线观看中文字幕dvd播放 | 欧美三级在线 | 欧美一级淫片免费视频黄 | 久草视频在线看 | 日韩精品一区二区久久 | 91在线视频播放 | 天天玩天天操天天干 | 福利成人| 一区二区三区高清 | 亚洲国产欧美日韩 | 欧一区| 久久91精品 | 影音先锋中文字幕在线观看 | 911网站大全在线观看 | 欧美日韩看片 | 亚洲色图图片 | 婷婷桃色网 | aaa精品 | 亚洲激精日韩激精欧美精品 | av手机免费在线观看 | 精品久久久久一区 | 欧美二区在线 | 国产成人福利在线观看 | 91麻豆精品国产91久久久久久久久 | 九九色综合 | 羞羞视频网站免费观看 |