1

MacのDnDとJTableに問題があります。次のプログラムを起動し、テーブル内で(高速)クリックして、何かを選択したり、しばらくしてからDnDを実行したりすると、アプリケーションがクラッシュしたり、少なくともDnDができなくなったりします。2台のMacでテストしました。

Javaバージョン:1.6.0_35 Mac OS X:10.6.8

誰かがこれを確認できますか?回避策はありますか?

package tablednd;

import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.SwingUtilities;

public class TableDnD {
public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            Object[][] data = {
                {"Mary", "Campione", "Snowboarding", new Integer(5), new Boolean(false)},
                {"Alison", "Huml", "Rowing", new Integer(3), new Boolean(true)},
                {"Kathy", "Walrath", "Chasing toddlers", new Integer(2), new Boolean(false)},
                {"Mark", "Andrews", "Speed reading", new Integer(20), new Boolean(true)},
                {"Angela", "Lih", "Teaching high school", new Integer(4), new Boolean(false)}
            };

            String[] columnNames = {"First Name", "Last Name", "Sport", "# of Years", "Vegetarian"};

            final JTable table = new JTable(data, columnNames);
            JFrame frame = new JFrame();
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            table.setDragEnabled(true);
            frame.add(table);
            frame.pack();
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
        }
    });
}
}
4

1 に答える 1

3

ドラッグした行をテーブルの他の場所にドロップすると、Mac OS X 10.5.8 まで、以下に示すエラーが表示されることがあります。ターゲット選択長方形は画面上に残り、それ以上のドラッグ操作はできません。理由はわかりませんが、セルが行の適切な宛先として認識されていないのでしょう。

2012-10-14 14:14:23.912 Java[44061:10b] *** -[NSWindowViewAWT ドラッグ終了:]:
    インスタンス 0x1001e7140 に送信された認識されないセレクター
2012-10-14 14:14:23.913 java[44061:10b] *** -[NSWindowViewAWT ドラッグ終了:]:
    インスタンス 0x1001e7140 に送信された認識されないセレクター

ドラッグした行を別のアプリケーションにドロップすると、期待どおりに機能します。

余談ですが、自動ボクシングは初期化コードを簡素化できます。

Object[][] data = {
    {"Mary", "Campione", "Snowboarding", 5, false},
    {"Alison", "Huml", "Rowing", 3, true},
    {"Kathy", "Walrath", "Chasing toddlers", 2, false},
    {"Mark", "Andrews", "Speed reading", 20, true},
    {"Angela", "Lih", "Teaching high school", 4, false}
};

補遺: この画像は、進行中のドラッグを示しています。異常をトリガーした後、フレームをドラッグしても灰色の四角形は動かないままです。

画像

回避策として、灰色の四角形を完全に無効にする解決策があります。

于 2012-10-14T18:33:16.653 に答える