JTable中对单元格的输入进行判断,如果输入为空就将光标锁定在这个单元格中,也就是只有这个单元格可编辑其他的不可以。怎么实现啊?? JTable中对单元格的输入进行判断,如果输入为空就将光标锁定在这个单元格中,也就是只有这个单元格可编辑其他的不可以。怎么实现啊?? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 利用setInputVerifier()这个方法,例如: import java.awt.*; import java.util.*; import java.awt.event.*; import javax.swing.*; public class VerifierTest extends JFrame { public VerifierTest() { JTextField tf1 = new JTextField ("输入 \"pass\" 才能释放焦点"); getContentPane().add (tf1, BorderLayout.NORTH); tf1.setInputVerifier(new PassVerifier()); JTextField tf2 = new JTextField ("TextField2"); getContentPane().add (tf2, BorderLayout.SOUTH); WindowListener l = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; addWindowListener(l); } class PassVerifier extends InputVerifier { public boolean verify(JComponent input) { JTextField tf = (JTextField) input; return "pass".equals(tf.getText()); } } public static void main(String[] args) { Frame f = new VerifierTest(); f.pack(); f.setVisible(true); } } 放在Table里不好用啊...怎么回事呢?? 如果放在table的话就比较麻烦了,要重写cellRender和cellEditor,还有tableModel。 都重写了就是不知道该把setInputVerifier(new PassVerifier());放在哪写啊? 如果要实现这个功能,你需要自定义一个类,这个类要继承JTextField,实现cellEditor接口,此时由于它继承了JTextField类,就可以用setInputVerifier方法了。 例如TableColumn sportColumn = table.getColumnModel().getColumn(2);...JTextField text = new JTextField();text.setInputVerifier(verifier);sportColumn.setCellEditor(new DefaultCellEditor(text));应该也可以,试试吧 在TableModel中去改写.public boolean isCellEditable(int row, int column) { return false;//false表示这个单元格不能编辑, } 关键就是这个设定焦点的方法 我用了requestFocus()方法也不好用。 我现在有个方法可以一试但就不会把鼠标禁用.请问哪位高手能告诉我java中可有把鼠标禁用的方法啊?有的话告诉我什么方法。哭求了! wzlsquall(亮亮),你好你的方法我试验过了还是没其作用.谢谢你的支持,又学到新知识。但我的问题依然存在啊 package com.test.jtable;import java.awt.BorderLayout;import java.awt.Component;import javax.swing.DefaultCellEditor;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.JTextField;import javax.swing.table.DefaultTableModel;import javax.swing.table.TableColumn;import javax.swing.table.TableColumnModel;public class CellEditorNotNull extends JFrame{ public CellEditorNotNull() { super("Table"); String value[][]={ {"1","2","3","4","5"} }; String columnName[]={"col1","col2","col3","col4","col5"}; DefaultTableModel model=new DefaultTableModel(value,columnName); JTable table=new JTable(model); TableColumnModel colmodel=table.getColumnModel(); for(int index=0;index<columnName.length;index++) { TableColumn tc = colmodel.getColumn(index); JTextField editor=new JTextField(); MyCellEditor cellEditor=new MyCellEditor(editor); cellEditor.setClickCountToStart(1); tc.setCellEditor(cellEditor); } this.add(new JScrollPane(table),BorderLayout.CENTER); this.setSize(300, 200); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); } public static void main(String args[]) { new CellEditorNotNull(); }}class MyCellEditor extends DefaultCellEditor{ public MyCellEditor(JTextField textField) { super(textField); // TODO Auto-generated constructor stub } public boolean stopCellEditing() { String value=(String)this.getCellEditorValue(); if(value.equals("")) { ((JTextField)this.getComponent()).requestFocus(); return false; } else return super.stopCellEditing(); }}重写单元格编辑器的stopCellEditing()方法就可以了。希望能满足你的要求 谢谢UNDEAD_YANG() 你的方法就是我想要的 非常感谢! 序列化问题 高手求教 问个选择题 有没有能选择多个选项的JCehckBox? 我写的计算器毛病在哪里 请高手们帮我详细指点一下 非常感谢!! jdbc更新oracle 表的long raw字段,请各位指教 有关JBuilder8的Sample的送分级的问题 菜鸟问题? 1000分求购263围棋源代码! 亚历士多德曾经说:“给我一个支点,我将撬动地球!”,为什么我仅仅只是点击了一下run的按钮,整个地球就不见了? 关于路径的问题!!!谢谢 字符长度的怪异问题啊....................星星进啊 中文问题!急
import java.awt.*;
import java.util.*;
import java.awt.event.*;
import javax.swing.*;
public class VerifierTest extends JFrame {
public VerifierTest() {
JTextField tf1 = new JTextField ("输入 \"pass\" 才能释放焦点");
getContentPane().add (tf1, BorderLayout.NORTH);
tf1.setInputVerifier(new PassVerifier());
JTextField tf2 = new JTextField ("TextField2");
getContentPane().add (tf2, BorderLayout.SOUTH);
WindowListener l = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
addWindowListener(l);
}
class PassVerifier extends InputVerifier {
public boolean verify(JComponent input) {
JTextField tf = (JTextField) input;
return "pass".equals(tf.getText());
}
}
public static void main(String[] args) {
Frame f = new VerifierTest();
f.pack();
f.setVisible(true);
}
}
TableColumn sportColumn = table.getColumnModel().getColumn(2);
...
JTextField text = new JTextField();
text.setInputVerifier(verifier);sportColumn.setCellEditor(new DefaultCellEditor(text));应该也可以,试试吧
public boolean isCellEditable(int row, int column) {
return false;//false表示这个单元格不能编辑,
}
请问哪位高手能告诉我java中可有把鼠标禁用的方法啊?有的话告诉我什么方法。哭求了!
谢谢你的支持,又学到新知识。但我的问题依然存在啊
import java.awt.Component;import javax.swing.DefaultCellEditor;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;public class CellEditorNotNull extends JFrame
{
public CellEditorNotNull()
{
super("Table");
String value[][]={
{"1","2","3","4","5"}
};
String columnName[]={"col1","col2","col3","col4","col5"};
DefaultTableModel model=new DefaultTableModel(value,columnName);
JTable table=new JTable(model);
TableColumnModel colmodel=table.getColumnModel();
for(int index=0;index<columnName.length;index++)
{
TableColumn tc = colmodel.getColumn(index);
JTextField editor=new JTextField();
MyCellEditor cellEditor=new MyCellEditor(editor);
cellEditor.setClickCountToStart(1);
tc.setCellEditor(cellEditor);
}
this.add(new JScrollPane(table),BorderLayout.CENTER);
this.setSize(300, 200);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String args[])
{
new CellEditorNotNull();
}
}class MyCellEditor extends DefaultCellEditor
{ public MyCellEditor(JTextField textField) {
super(textField);
// TODO Auto-generated constructor stub
}
public boolean stopCellEditing()
{
String value=(String)this.getCellEditorValue();
if(value.equals(""))
{
((JTextField)this.getComponent()).requestFocus();
return false;
}
else
return super.stopCellEditing();
}
}
重写单元格编辑器的stopCellEditing()方法就可以了。希望能满足你的要求