一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java Swing中JTable渲染器與編輯器用法示例

Java Swing中JTable渲染器與編輯器用法示例

2021-02-04 11:56pzy4447 Java教程

這篇文章主要介紹了Java Swing中JTable渲染器與編輯器用法,結合實例形式較為詳細的分析了Swing中JTable渲染器與編輯器的功能、使用方法及相關注意事項,需要的朋友可以參考下

本文實例講述了java swing中jtable渲染器與編輯器用法。分享給大家供大家參考,具體如下:

jtable的內容、外觀、事件響應在很大程度上是由渲染器與編輯器控制的。具體說來,渲染器負責單元格的外觀比如前景色、背景色,以及單元格提示;編輯器負責單元格的內容和事件響應。編輯器默認為文本框形式,也可以使用下拉菜單、按鈕、單選按鈕等形式。下面通過一個demo程序來說明渲染器與編輯器的基本用法。

jbuttontableexample.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package awtdemo;
import java.awt.event.windowadapter;
import java.awt.event.windowevent;
import javax.swing.jcheckbox;
import javax.swing.jframe;
import javax.swing.jscrollpane;
import javax.swing.jtable;
import javax.swing.table.defaulttablemodel;
@suppresswarnings("serial")
public class jbuttontableexample extends jframe {
 public jbuttontableexample() {
  super("jbuttontable example - www.ythuaji.com.cn");
  //添加tablemodel以及表格數據
  defaulttablemodel dm = new defaulttablemodel();
  dm.setdatavector(new object[][] { { "button 1", "foo" },
    { "button 2", "bar" } }, new object[] { "button", "string" });
  jtable table = new jtable(dm);
  //添加渲染器
  table.getcolumn("button").setcellrenderer(new buttonrenderer());
  //添加編輯器
  table.getcolumn("button").setcelleditor( new buttoneditor(new jcheckbox()));
  //gui設置
  jscrollpane scroll = new jscrollpane(table);
  getcontentpane().add(scroll);
  setsize(400, 100);
  setvisible(true);
 }
 public static void main(string[] args) {
  jbuttontableexample frame = new jbuttontableexample();
  frame.addwindowlistener(new windowadapter() {
   public void windowclosing(windowevent e) {
    system.exit(0);
   }
  });
 }
}

以上是主程序,構造了gui、table以及model。并設置了table的渲染器和編輯器。

buttonrenderer.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package awtdemo;
import java.awt.color;
import javax.swing.jbutton;
import javax.swing.jcomponent;
import javax.swing.jtable;
import javax.swing.table.tablecellrenderer;
@suppresswarnings("serial")
class buttonrenderer extends jbutton implements tablecellrenderer {
  public jcomponent gettablecellrenderercomponent(jtable table, object value,
   boolean isselected, boolean hasfocus, int row, int column) {
   //value 源于editor
   string text = (value == null) ? "" : value.tostring();
   //按鈕文字
   settext(text);
   //單元格提示
   settooltiptext(text);
   //背景色
   setbackground(color.black);
   //前景色
   setforeground(color.green);
  return this;
  }
}

定制的渲染器必須實現tablecellrenderer及gettablecellrenderercomponent方法。在該方法中,可以指定渲染器的文字、單元格提示、顏色、字體等。注意,此處的文字僅為顯示的內容,不是單元格的實際數據。

buttoneditor.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package awtdemo;
import java.awt.event.actionevent;
import java.awt.event.actionlistener;
import javax.swing.defaultcelleditor;
import javax.swing.jbutton;
import javax.swing.jcheckbox;
import javax.swing.jcomponent;
import javax.swing.joptionpane;
import javax.swing.jtable;
@suppresswarnings("serial")
class buttoneditor extends defaultcelleditor {
  protected jbutton button;//represent the celleditorcomponent
  private string cellvalue;//保存celleditorvalue
  public buttoneditor(jcheckbox checkbox) {
  super(checkbox);
  button = new jbutton();
  button.setopaque(true);
  button.addactionlistener(new actionlistener() {
   public void actionperformed(actionevent e) {
   joptionpane.showmessagedialog(button, cellvalue + ": ouch!");
   //刷新渲染器
   fireeditingstopped();
   }
  });
  }
  public jcomponent gettablecelleditorcomponent(jtable table, object value,
   boolean isselected, int row, int column) {
  //value 源于單元格數值
  cellvalue = (value == null) ? "" : value.tostring();
  return button;
  }
  public object getcelleditorvalue() {
  return new string(cellvalue);
  }
}

本編輯器實現了一個按鈕,相應的業務代碼均位于其事件響應函數中。定制的渲染器必須繼承defaultcelleditor,并重載其gettablecelleditorcomponent方法。gettablecelleditorcomponent的參數提供了表格對象、單元格數值、單元格選中標志以及單元格的坐標,并返回代表該單元格的渲染器的jcomponent組件。在該方法中,我們將單元格數值保存為成員變量cellvalue,并返回一個按鈕。getcelleditorvalue方法用于返回單元格數值,需要我們顯示地指定。在按鈕的事件響應函數中,本demo通過彈出對話框輸出了相應的單元格數值。然后,調用了fireeditingstopped方法刷新渲染器。注意,該步驟不必可少,因為渲染器中的業務代碼很有可能改變單元格數值,從而導致渲染器必須進行刷新。

運行效果如下:

Java Swing中JTable渲染器與編輯器用法示例

點擊button1后的效果如下:

Java Swing中JTable渲染器與編輯器用法示例

希望本文所述對大家java程序設計有所幫助。

原文鏈接:http://www.cnblogs.com/pzy4447/p/5155051.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 九九影院午夜理论片无码 | 午夜爱爱片 | 人与善交大片免费看 | 精品国产一区二区三区久 | 波多野给衣一区二区三区 | 欧美视频在线一区 | 免费人成在线观看 | 久久黄色大片 | 无遮挡免费h肉动漫在线观看 | 欧美黑人换爱交换乱理伦片 | 高清欧美不卡一区二区三区 | 亚欧洲乱码专区视频 | 亚洲成年人在线观看 | 免费看一级大片 | 欧美亚洲国产一区二区三区 | 视频在线视频免费观看 | 日韩欧美一区二区三区免费看 | www.爱情岛论坛 | 亚洲性爱区| 狐媚小说 | 爽好舒服宝贝添奶吻戏 | 国产一级特黄aa大片免费 | 99精品网 | 国产不卡视频一区二区在线观看 | melody中文字幕 | 免费看黄色大片 | 大学生宿舍飞机china free | 四虎1515hhh co m | 韩国三级在线 | 日韩无砖2021特黄 | 好大好硬抽搐好爽想要 | 无套暴躁白丝秘书 | 黄绝一级 | 国产麻豆视频 | 美女福利视频网站 | 美女被网站| 日本高清在线播放一区二区三区 | 国产精品天天看特色大片不卡 | dyav午夜片 | 99国产牛牛视频在线网站 | 狠狠久久久久综合网 |