2014-03-07 20 views
0

我創建一個包含基本數據的表格,這裏是我的軀體enter image description here當光標指向特定行時,如何獲取JTable中的行和列?

當我點擊該行,它會彈出一個新的框架,它包含了所有的數據,它工作得很好,我可以正常獲取該行當我點擊一個行的列,

enter image description here

但這裏是我想要做的:

當我設置的光標移到表格行,它會自動獲得該行和列的數據在桌子上,我想要t o顯示數據的圖片,就像在fb上一樣,當您將光標放在配置文件上時,在2秒後,它將顯示該用戶的配置文件。請幫助,我只是一個新手:)

+2

看看這裏:http://stackoverflow.com/a/11532503/2405781 –

+0

參見[?多JFrames,好/壞的做法的用途](http://stackoverflow.com/a/ 9554657/418556) –

回答

4

你可以做的是重寫JTableprepareRenderer方法,併爲每個單元格設置一個工具提示。然後使用一些HTML的刀尖從AndrewThompson

this answer看到我用這個形象從這個網站(這個問題)這個網址http://i.stack.imgur.com/Bbnyg.jpg,但你可能會想使用一個資源從您的系統或類路徑並使用toUri().toUrl()來創建網址。無論如何,html需要由<img src=中的URL組成。您可以根據row/column值切換它們。

enter image description here

這裏是例子。

enter image description here

import java.awt.Component; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.SwingUtilities; 
import javax.swing.table.DefaultTableModel; 
import javax.swing.table.TableCellRenderer; 

public class TestTableTooltip { 

    String html 
      = "<html><body>" 
      + "<img src='" 
      + "http://i.stack.imgur.com/Bbnyg.jpg" 
      + "' width=160 height=120> "; 

    public TestTableTooltip() { 
     String[] cols = {"COL", "COL", "COL"}; 
     String[][] data = { 
      {"Hello", "Hello", "Hello"}, 
      {"Hello", "Hello", "Hello"}, 
      {"Hello", "Hello", "Hello"} 
     }; 
     DefaultTableModel model = new DefaultTableModel(data, cols); 
     JTable table = new JTable(model) { 
      public Component prepareRenderer(TableCellRenderer renderer, int row, int column) { 
       Component c = super.prepareRenderer(renderer, row, column); 
       if (c instanceof JComponent) { 
        JComponent jc = (JComponent) c; 
        jc.setToolTipText(html + "<br/>" 
         + getValueAt(row, column).toString() 
         + ": row, col (" + row + ", " + column + ")" 
         + "</body></html>"); 
       } 
       return c; 
      } 
     }; 

     JFrame frame = new JFrame(); 
     frame.add(new JScrollPane(table)); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable() { 
      public void run() { 
       new TestTableTooltip(); 
      } 
     }); 
    } 
} 

UPDATE

可以從資源獲得一個URL(在你的類路徑)這樣

URL url = getClass().getResource("/path/to/image.png"); 
    final String html 
     = "<html><body>" 
     + "<img src='" 
     + url 
     + "' width=150 height=150> "; 

如果它是一個文件從文件系統,你可以這樣做

URL url = new File("path/to/image.png").toURI().toURL(); 
+0

*「我使用此圖片這個網址http://i.stack.imgur.com/Bbnyg.jpg從這個網站」*嗯..它很可愛。回答/問題在哪裏? –

+0

@AndrewThompson **這**回答:P –

+0

爆炸!我希望這是一個)在代碼中生成的,並聲明爲「開放許可證」b)是一系列角色之一,或者角色做不同的事情。 - (所有包括在主要[歡迎這些圖片的熱門鏈接](http://stackoverflow.com/a/19209651/418556)問答)。 –

相關問題