相关疑难解决方法(0)

是否可以在JFrame中使用JButtons,JTextField等"可移动"/"可拖动"组件?

基本上我打算在JFrame上放置一些按钮,文本字段,标签等,我想让用户可以用鼠标在JFrame上移动不同的组件.

我已经看过使用MouseListeners的各种方法,子类化JComponent代码,DropSource/DropTarget实现等等,但我不确定哪种是"推荐"方式(我不需要支持不同帧/应用程序之间的"拖放")这是大多数例子似乎做的事情).

java user-interface swing components drag-and-drop

6
推荐指数
1
解决办法
5383
查看次数

在Java Swing中启用Transfersupport的stringFlavor

我正在实现一个功能,将JLabel的Textattribute拖放到JTable的单元格中.所以我为表创建了一个自定义TransferHandler.但每一个电话

support.isDataFlavorSupported(DataFlavor.stringFlavor) 
Run Code Online (Sandbox Code Playgroud)

返回false

如何确保我的TransferHandler能够导入字符串?

这是来源

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 …
Run Code Online (Sandbox Code Playgroud)

java swing drag-and-drop jtable jlabel

4
推荐指数
1
解决办法
1145
查看次数

如何设置优先级鼠标监听器

我有一个包含列表和按钮的面板.列表设置MouseAdaptermouseClick().我添加到面板MouseAdaptermousePressed()mouseReleased()MouseMotionAdaptermouseDragged.

拖放仅在单击面板时有效.

即使我点击列表,如何使拖动工作?

简单的考试:

public class DragTest extends JFrame{
private boolean drag;
private Point btnCoord;
private Point startPoint;

public DragTest(){
    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
    setSize(500,500);
    setLayout(null);
    final JPanel panel = new JPanel();
    final JButton button = new JButton();
    button.setText("Button");
    button.setSize(30,60);
    button.setLocation(50, 50);
    panel.setLayout(null);
    setContentPane(panel);
    panel.addMouseMotionListener(new MouseMotionAdapter() {
        @Override
        public void mouseDragged(MouseEvent e) {
            if (drag){
                panel.setLocation(btnCoord.x-(startPoint.x-e.getX()),btnCoord.y-(startPoint.y-e.getY()));
            }
        }
    });
    panel.addMouseListener(new MouseAdapter() {
        @Override
        public void mousePressed(MouseEvent e) {
            drag …
Run Code Online (Sandbox Code Playgroud)

java swing drag-and-drop mouseevent jlist

1
推荐指数
1
解决办法
1704
查看次数