Отображение изображения в ячейке JTable - PullRequest
2 голосов
/ 09 февраля 2012

Я использую следующую программу для создания JTable с использованием класса Java. Если я получаю изображения для warnIcon, infoIcon из панели параметров отображается правильно. Однако, если я добавлю изображение из моей системы, оно не отобразится в таблице. Пустое пространство отображается вместо моего изображения. Как нарисовать изображение из файла (например, A.jpg) в этой таблице?

package pointer;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import javax.swing.*;
import javax.swing.plaf.OptionPaneUI;
import javax.swing.table.*;
import sun.swing.ImageIconUIResource;

public class TableIcon1 extends JFrame  {
    private JTable table;
    private int pHeight = 60;
       public TableIcon1() {
           ImageIcon testIcon = new ImageIcon("A.jpg");
          // ImageIcon errorIcon = (ImageIcon) UIManager.getIcon("OptionPane.errorIcon");
           ImageIcon infoIcon = (ImageIcon) UIManager.getIcon("OptionPane.informationIcon");
           ImageIcon warnIcon = (ImageIcon) UIManager.getIcon("OptionPane.warningIcon");
           String[] columnNames = {"Picture", "Description"};
           Object[][] data = {{testIcon  , "About"}, {infoIcon, "Add"}, {warnIcon, "Copy"},};
           DefaultTableModel model = new DefaultTableModel(data, columnNames);
           table = new JTable(model) {
            @Override
            public Class getColumnClass(int column) {
                return getValueAt(2, column).getClass();
            }
          };
           table.setRowHeight(pHeight);
           table.setPreferredScrollableViewportSize(table.getPreferredSize());
           JScrollPane scrollPane = new JScrollPane(table);
           add(scrollPane, BorderLayout.CENTER);
         }

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

1 Ответ

3 голосов
/ 09 февраля 2012
ImageIcon testIcon = new ImageIcon("A.jpg"); is road to nowhere

Обычный значок, который никогда не возвращает никаких исключений для неверного пути или нулевого значения, вы должны проверить, что

лучше всего создать новую папку с именем icons в вашем Java project и там скопируйте свой A.jpg Icon

, тогда вы можете только позвонить

URL url = ClassLoader.getSystemClassLoader().getResource("icons/A.jpg");
ImageIcon testIcon = new ImageIcon(url);
...