Как изменить изображение Jtable из одного столбца в другой столбец, используя событие щелчка мыши? - PullRequest
0 голосов
/ 11 февраля 2012

Я пытаюсь использовать следующий класс Java для добавления изображения в Jtable.Это сработало правильно.Моя проблема, когда я пытаюсь изменить изображение третьего столбца на второй столбец (своп), используя событие щелчка мыши.Но это не сработает.Я меняю место testIcon2, testIcon1 в событии щелчка мыши.

Сначала я загружаю изображение, как Object[][] data = {{testIcon, "book1"}, {testIcon1, "book2"}, {testIcon2, "book3"}, {testIcon3, "book4"}};

При щелчке мыши: Object[][] data1 = {{testIcon, "book1"}, {testIcon2, "book2"}, {testIcon1, "book3"}, {testIcon3, "book4"}};

Как изменить изображение второго столбца на первый столбец при щелчке строки?

public class TableIcon1 extends JFrame {
    private JTable table;
    private int pHeight = 60;

    public TableIcon1() {
        URL url = getClass().getResource("image/Pointer.GIF");
        final ImageIcon testIcon = new ImageIcon(url);
        URL url1 = getClass().getResource("image/1.jpg");
        final ImageIcon testIcon1 = new ImageIcon(url1);
        URL url2 = getClass().getResource("image/2.jpg");
        final ImageIcon testIcon2 = new ImageIcon(url2);
        URL url3 = getClass().getResource("image/3.jpg");
        final ImageIcon testIcon3 = new ImageIcon(url3);
        String[] columnNames = {"Picture", "Description"};
        Object[][] data = {{testIcon  , "book1"}, {testIcon1, "book2"}, {testIcon2, "book3"},{testIcon3, "book4"}};
        DefaultTableModel model = new DefaultTableModel(data, columnNames);

        table = new JTable(model) {
            public Class getColumnClass(int column) {
                return getValueAt(1, column).getClass();
            }
        };

        table.setRowHeight(pHeight);
        table.setPreferredScrollableViewportSize(table.getPreferredSize());

        JScrollPane scrollPane = new JScrollPane(table);
        add(scrollPane, BorderLayout.CENTER);

        table.addMouseListener(new MouseAdapter(){
            @Override
            public void mouseClicked(MouseEvent event) {
                String[] columnNames1 = {"Picture", "Description"};
                Object[][] data1 = {{testIcon  , "book1"}, {testIcon2, "book2"}, {testIcon1, "book3"},{testIcon3, "book4"}};
                DefaultTableModel model1 = new DefaultTableModel(data1, columnNames1);
                table = new JTable(model1) {
                    public Class getColumnClass(int column) {
                        return getValueAt(1, column).getClass();
                    }
                };
            }
        });
    }

    public static void main(String[] args) {
        TableIcon1 frame = new TableIcon1();
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
        frame.setLocation(150, 150);
        frame.pack();
        frame.setVisible(true);
    }
}
...