是否可以在JTable單元格內添加按鈕以及數據? 我想要做的是創建一個表格,其中顯示數據庫中的數據(數字)和兩個按鈕來增加/減少同一單元格內的數字。在JTable的單元格內添加按鈕以及數據?
| ID |產品數量|
| 06 | 2 [+] [ - ] |
它會是這樣的如上[+] [ - ]是按鈕。所以當我按[+]時,如果按[ - ],數字將變爲3和1。
是否可以在JTable單元格內添加按鈕以及數據? 我想要做的是創建一個表格,其中顯示數據庫中的數據(數字)和兩個按鈕來增加/減少同一單元格內的數字。在JTable的單元格內添加按鈕以及數據?
| ID |產品數量|
| 06 | 2 [+] [ - ] |
它會是這樣的如上[+] [ - ]是按鈕。所以當我按[+]時,如果按[ - ],數字將變爲3和1。
是的,這是可能的,雖然這並不容易。
你必須寫自己的定製cell renderer和你自己的cell editor。
這是一個示例我在5分鐘內做:
它遠非完美,但顯示的概念。
這裏的源代碼:
import java.awt.Component;
import java.awt.Font;
import javax.swing.*;
import javax.swing.table.*;
import java.awt.Dimension;
public class CustomCell {
public static void main(String [] args) {
Object [] columnNames = new Object[]{ "Id", "Quantity" };
Object [][] data = new Object[][]{ {"06", 1}, {"08", 2} };
JTable table = new JTable(data, columnNames) {
public TableCellRenderer getCellRenderer(int row, int column) {
return new PlusMinusCellRenderer();
}
};
table.setRowHeight(32);
showFrame(table);
}
private static void showFrame(JTable table) {
JFrame f = new JFrame("Custom Cell Renderer sample");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.add(new JScrollPane(table));
f.pack();
f.setVisible(true);
}
}
class PlusMinusCellRenderer extends JPanel implements TableCellRenderer {
public Component getTableCellRendererComponent(
final JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column) {
this.add(new JTextField(value.toString() ));
this.add(new JButton("+"));
this.add(new JButton("-"));
return this;
}
}
這裏有可能是interesting和here一個線程。
我認爲你需要創建一個自定義單元格渲染器,如果你想顯示什麼比在單元格中的文本(或數字)人。單元格渲染器的工作是繪製任何需要在單元格中顯示的內容。
請參閱Table Renderer documentation。
因此,在這種情況下,你可以創建一個小JPane其中包含文本字段和微小的+和 - 按鈕 - 或者只是一個JSpinner的組成部分,如果確實需要的東西。有點棘手,當然,但應該是可能的。
是否可以添加actionListeners到這些按鈕? – cp101020304 2015-08-22 05:46:23
這些按鈕實際上不可點擊;我必須添加我自己的MouseListener或類似的東西來實現這個功能嗎? – ricky3350 2015-12-11 01:29:30