日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java 悬浮提示框_表格(悬浮框提示)

發布時間:2024/7/5 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 悬浮提示框_表格(悬浮框提示) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JTable的ToolTip提示和其它的組件提示是一樣的,因為它們都是繼承于Jcomponent,當我們需要為我們的單元格實現ToolTip的時候,只需要復寫它的getToolTipText方法就可以了,

看看Sun官方的例子:

//Implement table cell tool tips.

@Override

publicString getToolTipText(MouseEvent

e) {

取得鼠標的行和列:

java.awt.Point p = e.getPoint();

introwIndex = rowAtPoint(p);

intcolIndex = columnAtPoint(p);

intealColumnIndex = convertColumnIndexToModel(colIndex);

設置你需要顯示的ToolTip,然后返回

tip = ……;

returntip;

同樣的JTableHeader也是如此:

protectedJTableHeader

createDefaultTableHeader() {

returnnewJTableHeader(columnModel){

@Override

publicString

getToolTipText(MouseEvent e) {

這樣不用其它設置,JTable的基本ToolTip就實現了,它雖然比較簡單,但是最大的好處是不用自己考慮定位和顯示的問題,很多時候也就可以了.

關于JTable的簡單ToolTip提示就算是完成了,當我們只是簡單的提示的時候,只需要復寫JTable的getToolTipText和setToolTipText方法就可以了,上個例子就是這樣;但是當我們需要使我們的ToolTip提示不像Sun提供的那么單調,我們就需要自己來實現了.

這時候的重點已經不在JTable上了,而在于ToolTip上面,我們可以把我們需要呈現的ToolTip實現為一個JPanel,這樣就可以在它的上面放置各種組件了,設置放圖標都可以,這個時候就需要實現這個ToolTip的UI和Manager,這方面有很多開源的實現,以后有時間的話開個專題專門來介紹ToolTip的,這里不寫了.

對于已經實現好的我們自己的ToolTip,我們需要做的是把它注冊到我們的JTable上面,再根據鼠標的位置顯示它,如下圖所示,它可以有Title,可以有圖片,可以有正文,甚至可以再加別的組件.如下圖所示:

我們需要的是增加監聽:

addMouseListener(this)

根據監聽的狀態處理ToolTip:

@Override

publicvoidmouseExited(MouseEvent event) {

隱藏

@Override

publicvoidmousePressed(MouseEvent event) {

顯示

@Override

publicvoidmouseMoved(MouseEvent event) {

判斷狀態,顯示或者隱藏.

然后是判斷位置:

// display

directly below or above JTable band

location.x= screenLocation.x;

location.y= screenLocation.y+

mouseEvent.getY() + 22;

location.x= screenLocation.x+mouseEvent.getX();

f((location.y+ size.height) > (sBounds.y+ sBounds.height)) {

location.y= screenLocation.y- size.height;

最后是取得鼠標所在單元格的值傳入顯示:

Point p = mouseEvent.getPoint();

introw =

rowAtPoint(p);

intcol =

columnAtPoint(p);

if(row == -1

|| col == -1) {

returnnull;

}

Object data = getValueAt(row, col);

當然此時你可以對data做變換,從而顯示需要的值.

使用很簡單,注冊就可以了.

setActionRichTooltip(newRichTooltip());

然后是另外一種ToolTip的效果,這個是一個開源的實現,只抓張圖看看就算了,和前面的實現基本類似,還比那個簡單,也是UI,Timer以及位置計算.如下圖,代碼在open就有:

ToolTip到這兒就算完了,但是實際使用中可能有這個問題,如下圖:

這是因為我們經過設置Renderer渲染的單元格顯示值和實際值不一樣了.但我們很多時候需要看到的其實不是它的真實值,而是渲染后的值,可以通過渲染的實現類把它取回來:

先取得渲染類:

TableCellRenderer cellRenderer = table.getColumnModel().getColumn(column).getCellRenderer();

再去的渲染的控件:

Component component =

cellRenderer.getTableCellRendererComponent(table,

table.getValueAt(row, column),false,false, row, column);

這個時候不知道這個控件是否有getText方法,通過反射判斷,沒有則設置為””

String text ="";

if(component

!=null) {

for(Method

method : component.getClass().getMethods()) {

if(method.getName().equals("getText")) {

text =

method.invoke(component).toString();

}

}

}

最后效果如圖:

到此為止,所有關于JTable的ToolTip提示就完成了,當然我實現的都是一些基本的效果,比較復雜的效果,則需要你自己去繪制和實現ToolTip了,說句簡單的,技術完成了,以后就是玩色彩和審美了,做程序也就這樣了,很多時候后者重要.

總結

以上是生活随笔為你收集整理的java 悬浮提示框_表格(悬浮框提示)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。