データとともにJTableのセルの内部にボタンを追加しますか?
質問
これは、データとともにJTableのセル内のボタンを追加することは可能ですか? 私は何をしようとしていることは同じセル内の数を増加/減少させるために、データベースからのデータ(番号)を表示し、列、と2つのボタンを持つテーブルを作成することです。
| ID |数量|
| 06 | 2 [+] [ - ] |
これは、[+]と上記のようなものになるだろう。 [ - ]私は[+]を押すと、押すのであれば、数は3と1に変更されます。
解決
それは容易ではないだろうが、
はい、それは、可能です。
あなたは、独自のカスタムを記述する必要がセルレンダリングと独自のセルエディタ。
これは、私は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;
}
}
ここで興味深いと
他のヒント
私はあなたが、セル内のテキスト(または数字)よりも何かを表示したい場合は、カスタムセルレンダラーを作成する必要があると思います。セルレンダラーの仕事は、あなたがセルに表示する必要があるものは何でも描くことです。
表レンダラのドキュメントを参照してください。
何が必要ない場合、または単にするJSpinnerコンポーネント - ボタン -この場合、テキストフィールドと小さな+とが含まれている小さなJPaneを作成することができますので。ビット確認のため、トリッキーが、可能である必要があります。
所属していません StackOverflow