在JTable單元格中實現可選擇的JComboBox,經典例子原始碼(如設定性別)
在JTable單元格中實現可選擇的JComboBox,經典例子原始碼(如設定性別)[@more@]性別的例子,使用方法如下:
TableColumnModel tcm = table.getColumnModel();
TableColumn tc = tcm.getColumn(genderColumn);// genderColumn為你的性別的例序號。
tc.setCellRenderer(new GenderRenderer());
tc.setCellEditor(new GenderEditor());
限制如下,該列型別為boolean。
/**
* GenderEditor.java
*/
import java.awt.Component;
import java.util.EventObject;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
public class GenderEditor extends JComboBox implements TableCellEditor {
protected EventListenerList listenerList = new EventListenerList();
protected ChangeEvent changeEvent = new ChangeEvent(this);
public GenderEditor() {
super();
addItem("Male");
addItem("Female");
addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
fireEditingStopped();
}
});
}
public void addCellEditorListener(CellEditorListener listener) {
listenerList.add(CellEditorListener.class, listener);
}
public void removeCellEditorListener(CellEditorListener listener) {
listenerList.remove(CellEditorListener.class, listener);
}
protected void fireEditingStopped() {
CellEditorListener listener;
Object[] listeners = listenerList.getListenerList();
for (int i = 0; i < listeners.length; i++) {
if (listeners[i] == CellEditorListener.class) {
listener = (CellEditorListener)listeners[i + 1];
listener.editingStopped(changeEvent);
}
}
}
protected void fireEditingCanceled() {
CellEditorListener listener;
Object[] listeners = listenerList.getListenerList();
for (int i = 0; i < listeners.length; i++) {
if (listeners[i] == CellEditorListener.class) {
listener = (CellEditorListener)listeners[i + 1];
listener.editingCanceled(changeEvent);
}
}
}
public void cancelCellEditing() {
fireEditingCanceled();
}
public boolean stopCellEditing() {
fireEditingStopped();
return true;
}
public boolean isCellEditable(EventObject event) {
return true;
}
public boolean shouldSelectCell(EventObject event) {
return true;
}
public Object getCellEditorValue() {
return new Boolean(getSelectedIndex() == 0 ? true : false);
}
public Component getTableCellEditorComponent(JTable table,
Object value, boolean isSelected, int row, int column) {
boolean isMale = ((Boolean)value).booleanValue();
setSelectedIndex(isMale ? 0 : 1);
return this;
}
}
/**
* GenderRender.java
*/
import java.awt.Component;
import javax.swing.JComboBox;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
public class GenderRenderer extends JComboBox implements TableCellRenderer {
public GenderRenderer() {
super();
addItem("Male");
addItem("Female");
}
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
if (isSelected) {
setForeground(table.getSelectionForeground());
super.setBackground(table.getSelectionBackground());
} else {
setForeground(table.getForeground());
setBackground(table.getBackground());
}
boolean isMale = ((Boolean)value).booleanValue();
setSelectedIndex(isMale ? 0 : 1);
return this;
}
}
TableColumnModel tcm = table.getColumnModel();
TableColumn tc = tcm.getColumn(genderColumn);// genderColumn為你的性別的例序號。
tc.setCellRenderer(new GenderRenderer());
tc.setCellEditor(new GenderEditor());
限制如下,該列型別為boolean。
/**
* GenderEditor.java
*/
import java.awt.Component;
import java.util.EventObject;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;
public class GenderEditor extends JComboBox implements TableCellEditor {
protected EventListenerList listenerList = new EventListenerList();
protected ChangeEvent changeEvent = new ChangeEvent(this);
public GenderEditor() {
super();
addItem("Male");
addItem("Female");
addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
fireEditingStopped();
}
});
}
public void addCellEditorListener(CellEditorListener listener) {
listenerList.add(CellEditorListener.class, listener);
}
public void removeCellEditorListener(CellEditorListener listener) {
listenerList.remove(CellEditorListener.class, listener);
}
protected void fireEditingStopped() {
CellEditorListener listener;
Object[] listeners = listenerList.getListenerList();
for (int i = 0; i < listeners.length; i++) {
if (listeners[i] == CellEditorListener.class) {
listener = (CellEditorListener)listeners[i + 1];
listener.editingStopped(changeEvent);
}
}
}
protected void fireEditingCanceled() {
CellEditorListener listener;
Object[] listeners = listenerList.getListenerList();
for (int i = 0; i < listeners.length; i++) {
if (listeners[i] == CellEditorListener.class) {
listener = (CellEditorListener)listeners[i + 1];
listener.editingCanceled(changeEvent);
}
}
}
public void cancelCellEditing() {
fireEditingCanceled();
}
public boolean stopCellEditing() {
fireEditingStopped();
return true;
}
public boolean isCellEditable(EventObject event) {
return true;
}
public boolean shouldSelectCell(EventObject event) {
return true;
}
public Object getCellEditorValue() {
return new Boolean(getSelectedIndex() == 0 ? true : false);
}
public Component getTableCellEditorComponent(JTable table,
Object value, boolean isSelected, int row, int column) {
boolean isMale = ((Boolean)value).booleanValue();
setSelectedIndex(isMale ? 0 : 1);
return this;
}
}
/**
* GenderRender.java
*/
import java.awt.Component;
import javax.swing.JComboBox;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
public class GenderRenderer extends JComboBox implements TableCellRenderer {
public GenderRenderer() {
super();
addItem("Male");
addItem("Female");
}
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
if (isSelected) {
setForeground(table.getSelectionForeground());
super.setBackground(table.getSelectionBackground());
} else {
setForeground(table.getForeground());
setBackground(table.getBackground());
}
boolean isMale = ((Boolean)value).booleanValue();
setSelectedIndex(isMale ? 0 : 1);
return this;
}
}
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/143526/viewspace-1019326/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 直播商城原始碼如何實現資料的單項選擇原始碼
- 如何隱藏Excel中單元格公式且其他單元格可修改Excel公式
- c# datagridview選中當前單元格及單元格單擊事件C#View事件
- HTML 單選按鈕實現 (性別選擇)(解讀)HTML
- 經典排序之選擇排序(Java)排序Java
- jQuery cssHook的經典例子jQueryCSSHook
- js獲取點選單元格中的內容程式碼例項JS
- Java實現二元選擇排序Java排序
- 關於Easyui的datagrid的可編輯單元格和合並單元格UI
- 關於個人部落格的選擇及實現
- 直播商城原始碼,PopupWindow選單在ListView中顯示原始碼View
- 直播app原始碼,map實現購物車選擇功能APP原始碼
- Swing 自定義JTable 多選框 自動選擇的錯誤
- 短視訊原始碼,uniapp中單選框radio的實現原始碼APP
- 在Golang中實現Actor模型的原始碼 - GauravGolang模型原始碼
- 普通填報表單元格實現資料二次篩選
- 轉:在ABAP中實現進度條的例子
- win10 怎麼改為經典選單_win10如何設定開始為經典開始選單Win10
- 選擇下拉選單項實現跳轉效果
- 選單中的命令的實現
- 23個經典設計模式的Swift實現設計模式Swift
- 單例模式的幾種實現與在Android原始碼中的應用單例模式Android原始碼
- Delphi_Excel例子:單元格複製貼上 (轉)Excel
- WPF DataGrid實現單擊單元格直接編輯
- 在選擇短影片直播系統原始碼看這幾點,後期可省心省力原始碼
- JTable 在TCP傳輸中報錯TCP
- js實現table合併相同列單元格JS
- 使用Qt5+CMake實現圖片的區域選擇(附原始碼)QT原始碼
- 經典作業系統教材中的LRU演算法的自編c++實現及原始碼。 (轉)作業系統演算法C++原始碼
- javascript實現表單可點選倒數計時程式碼JavaScript
- vba-單元格程式碼
- 在RFT中如何獲取JTable中的所有資料?
- POI設定excel單元格Excel
- jQuery獲取點選td單元格的值jQuery
- PPT中圖表型別的選擇型別
- 直播間原始碼該如何選擇,新人還在等,老司機已經進來看了原始碼
- 「性別選擇」在遊戲中產生了哪些影響?遊戲
- 實現累加的經典sql方法SQL