데이터와 함께 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
버튼은 실제로 클릭 할 수 없습니다. 내 자신의 MouseListener 또는 이와 같은 작동하도록 추가 할 것이라고? – ricky3350