2012-05-23 40 views
0

我偶然发现了一个与我的程序有关的问题。Java - 使用来自JTable的路径显示图像

作用:侦听JTable中的行选择,使用“getSelectedRow”抓取一单元格的内容,例如:在上面的例子中未示出什么

public void valueChanged(ListSelectionEvent e) { 

    int row = resultTable.getSelectedRow(); 
    String val = resultTable.getValueAt(row,2).toString(); 

    System.out.println("The value of cell 2 at selected row is: " + val); 

} 

是JTable的单元格2包含图像的本地路径,这些路径是从本地运行的MySQL数据库中获取的。

我想要它做什么:我想使用包含在我的JTable单元2绘制和时的valueChanged(上面显示)被触发在外部JFrame的显示图像的路径。

考虑到上述因素(以及我对此相当陌生的事实),我该如何去将这个'val'传递给一个ImageIO.read(我假设它将在一个单独的类中运行? )

感谢您的宝贵时间,任何帮助appriciated!

+0

什么样的图片是那些检查getValueIsAdjusting()的值? PNG,JPEG? – mavroprovato

+0

这些都是jpeg图像,但是从我所知道的imageIO能够显示大多数图像类型? – Bittein

回答

2

你并不真正需要的ImageIO JPEG图像。只需添加此代替您的System.out.println:

JFrame frame = new JFrame(); 
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
JLabel label = new JLabel(new ImageIcon(val)); 
frame.setContentPane(label); 
frame.pack(); 
frame.setVisible(true); 

如果val参数包含有效的路径,则将显示图像。

如果图像被打开不止一次,对于ListSelectionEvent

+0

谢谢您的回复,我会马上对它进行测试。 虽然后续的问题是,默认路径(如果我只将文件名而不是完整的路径)将与它运行的.java文件的主目录相同,对吗? – Bittein

+0

我不明白默认路径是什么意思。这些文件将存储在任何地方。如果所有文件都在同一目录中,则可以将该目录放入配置文件中,并将此路径附加到valueChanged内的val中。我认为如果您将图像作为CLOB存储在数据库中,则会更好,如果您不知道它是什么,则可以使用google for CLOB。 – mavroprovato

+0

哦对不起,如果我过于复杂的问题,我要问的是,如果'val'是'example.jpg''example.jpg'应放在哪里显示?从这个问题 – Bittein

相关问题