데이터와 함께 jtable 셀 내부에 버튼을 추가 하시겠습니까?
문제
데이터와 함께 jtable 셀 내부에 버튼을 추가 할 수 있습니까? 내가하려고하는 것은 데이터베이스에서 데이터 (숫자)를 표시하는 열이있는 테이블을 만들고 동일한 셀 내부의 숫자를 늘리거나 줄이기 위해 두 개의 버튼을 만드는 것입니다.
| 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;
}
}
다른 팁
셀에 텍스트 (또는 숫자) 이외의 다른 것을 보여 주려면 사용자 정의 셀 렌더러를 만들어야한다고 생각합니다. 셀 렌더러의 임무는 셀에서 보여주는 데 필요한 것을 페인트하는 것입니다.
보다 테이블 렌더러 문서.
따라서이 경우 텍스트 필드와 작은 + 및 버튼이 포함 된 작은 jpane 또는 필요한 작업을 수행하는 경우 JSpinner 구성 요소를 만들 수 있습니다. 약간 까다 롭지 만 가능해야합니다.
제휴하지 않습니다 StackOverflow