如果我采用a JTable并在其模型上指定列的classtype,如下所示:
DefaultTableModel model = new DefaultTableModel(columnNames, 100) {
@Override
public Class<?> getColumnClass(int columnIndex) {
return Integer.class;
}};
Run Code Online (Sandbox Code Playgroud)
然后,只要用户尝试double在表中输入值,Swing就会自动拒绝输入并将单元格的轮廓设置为红色.
当某人输入单元格的"负数或0"输入时,我希望发生相同的效果.我有这个:
@Override
public void setValueAt(Object val, int rowIndex, int columnIndex) {
if (val instanceof Number && ((Number) val).doubleValue() > 0) {
super.setValueAt(val, rowIndex, columnIndex);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这可以防止单元格接受任何非正值,但不会将颜色设置为红色并使单元格保持可编辑状态.
我试着调查JTable默认情况下是如何做出拒绝的,但我似乎无法找到它.
如何拒绝非正输入与拒绝非整数输入相同?
谢谢
我试图添加JRadioButton到JTable使用CellEditor和CellRenderer,但我不能添加JRadioButton入JTable.我正在使用NetBeans和后端MySQL.请帮我.
编辑:谢谢,但我不知道如何分组JRadioButton.你能帮助我吗?我有4列.第一列单元格包含项目名称,第二列单元格包含数量,第3和第4列单元格包含JRadio Buttons.然后我想分组第3和第4列单元格,每行包含JRadio按钮
编辑:如果我尝试使用此方法在jTable的自定义代码中添加radiobutton,
new JRadioButton("a")然后它会javax.swing.JRadioButton[,0,0,0x0,invalid,alignmentX=0.0,.....text=a],在列中而不是按钮中出现
我有一个使用自定义DefaultTableModel的JTable,它在最后一列中有一些布尔值(显示为勾选框).
当我添加一个MouseListener来检索被点击的值时,似乎不再发生勾选框的切换.
// As soon as this is used in the component
// that is using the JTable, the toggling stops
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent evt) {
int col = table.getSelectedColumn();
int row = table.getSelectedRow();
Object o = table.getModel().getValueAt(row, col);
Run Code Online (Sandbox Code Playgroud)
我假设侦听器正在使用该事件.我可以将哪些内容添加到MouseListener代码以恢复切换行为?
编辑:
哎呀,问题似乎在于我的覆盖:
@Override
public void setValueAt(Object aValue, int row, int column) {
// Attempt at mutually exclusive checkboxes
if( column == 2 ){ // Starts at 0. Seek an alternative solution to avoid hardcoding?
// Algorithm: cycle …Run Code Online (Sandbox Code Playgroud) 加载Jtable后,会触发一个返回id的函数.我想根据此ID选择行,或者在每行中选中一个复选框.
负载工作正常,复选框显示.但是我无法处理复选框以便以编程方式选择它们.
任何帮助表示赞赏.
我的表创建代码如下:
//Table Definition
$('#dvChangeOrd').jtable({
title: 'Change Order Selection (Select all that apply to this request):',
paging: true,
pageSize: 5,
sorting: true,
defaultSorting: 'ChangeOrd ASC',
selecting: true, //Enable selecting
multiselect: true, //Allow multiple selecting
selectingCheckboxes: true, //Show checkboxes on first column
recordsLoaded: function (event, data) {
},
actions: {
listAction: 'c013.aspx/LoadLists',
},
fields: {
ChangeOrd: {
title: 'Change Order',
width: '15%',
},
Type: {
title: 'Type',
width: '25%',
},
Status: {
title: 'Status',
width: '10%',
},
ChangeDesc: { …Run Code Online (Sandbox Code Playgroud) 我的JFrame中有11个不同的复选框,并且希望能够在检查总数被检查时获得一个数字.我知道如何设置一个ItemListener,看看是否有一个被检查,但我不知道如何检查所有这些..
编辑:
cblist是一个包含11个JCheckBoxes的ArrayList.我给每个JCheckBox一个项目监听器,这里是单击复选框时使用的类...
private class CheckClass implements ItemListener{
public void itemStateChanged(ItemEvent event){
for(cblist.isChecked){
ingnum++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
在for循环中,我如何测试ArrayList的所有元素..我理解我的语法现在不正确.
我正在尝试根据第一列值对特定行进行着色JTable,但下面的代码根据行的索引对行进行着色.我的表只有四列.第一列有ID号.我需要根据这些ID号对行进行着色.例如,如果第一个ID为0而第二个ID也为0,则它们都应为"lightGray".好吗,拜托?
table_1 = new JTable(){
public Component prepareRenderer(TableCellRenderer renderer,int Index_row, int Index_col) {
Component comp = super.prepareRenderer(renderer,Index_row, Index_col);
//even index, selected or not selected
if (Index_row % 2==0 && !isCellSelected(Index_row, Index_col)) {
comp.setBackground(Color.lightGray);
} else {
comp.setBackground(Color.white);
}
return comp;
}
};
Run Code Online (Sandbox Code Playgroud)
以下是它现在的样子:

我有一个像这个SSCCE这样的数据的JTable:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.*;
import java.awt.Color;
class kanji{
public static void main(String args[]){
JFrame frame = new JFrame("Kanji");
JPanel pane = new JPanel();
JTable table = new JTable();
pane.setLayout(new BorderLayout());
JButton agreg = new JButton("Agregar");
DefaultTableModel model = new DefaultTableModel(get_data(), get_header());
JFrame hk = new JFrame("Historial de Significados");
Image icon = Toolkit.getDefaultToolkit().getImage("JLPT.jpg");
ImageIcon ima = new ImageIcon("JLPT.jpg");
table = new JTable(model){
@Override
public boolean isCellEditable(int …Run Code Online (Sandbox Code Playgroud) 我是编程的新手,我无法添加JCheckbox到JList.没有错误但没有显示任何内容.
JFrame f=new JFrame();
String[] labels={"a","b","c","d","e"};
JCheckBox[] ch=new JCheckBox[labels.length];
JList list=new JList();
for (int i = 0; i < labels.length; i++) {
ch[i]=new JCheckBox("CheckBox"+i);
list.add(ch[i]);
}
JScrollPane pane=new JScrollPane(list);
f.add(pane);
f.setVisible(true);
Run Code Online (Sandbox Code Playgroud) 您好我的java swing项目有一个表,最后一列是布尔值..我将其更改为chceckbox.but我需要绑定事件,并知道它是否是检查.. !!
下面的代码工作正在显示复选框
retunTable=new JTable(model){
private static final long serialVersionUID = 1L;
/*@Override
public Class getColumnClass(int column) {
return getValueAt(0, column).getClass();
}*/
@Override
public Class getColumnClass(int column) {
switch (column) {
case 0:
return Object.class;
case 1:
return Object.class;
case 2:
return Object.class;
case 3:
return Object.class;
default:
return Boolean.class;
}
}
};
Run Code Online (Sandbox Code Playgroud)
我不知道在哪里放addActionListener .. !!
需要帮助..!!