小弟我写了一个程序。界面上:一个JTable(2行2列),第2列可以编辑。2个JButton。作用为:点击某个按钮添加某个特定的符号(+ ,-)。
要实现的功能是:当JTable的某行第2列处于编辑状态时。点击某个按钮。可以追加某个符号在当前列里面。
比如说:JTable的第一行第二列目当前处于可以编辑状态。我在里面输入“1”,然后我想要点击第一个按钮追加一个“+”在1后面。就是实现这个功能。
其实功能小弟我是实现了。但是效果不尽人意。比如说:我先输入“1”,然后我点击按钮。但是符号加不进去。如果想要加进去。就必须在输入单元格内容完毕后,敲击回车键(敲击后。单元格不处于编辑状态)。然后再点击按钮。符号就加进去了。
请高手帮忙。如果需要代码,我会贴出来。
要实现的功能是:当JTable的某行第2列处于编辑状态时。点击某个按钮。可以追加某个符号在当前列里面。
比如说:JTable的第一行第二列目当前处于可以编辑状态。我在里面输入“1”,然后我想要点击第一个按钮追加一个“+”在1后面。就是实现这个功能。
其实功能小弟我是实现了。但是效果不尽人意。比如说:我先输入“1”,然后我点击按钮。但是符号加不进去。如果想要加进去。就必须在输入单元格内容完毕后,敲击回车键(敲击后。单元格不处于编辑状态)。然后再点击按钮。符号就加进去了。
请高手帮忙。如果需要代码,我会贴出来。
楼主【lirenhong0108】截止到2008-07-18 17:12:54的历史汇总数据(不包括此帖):
发帖的总数量:10 发帖的总分数:120 每贴平均分数:12
回帖的总数量:9 得分贴总数量:1 回帖的得分率:11%
结贴的总数量:9 结贴的总分数:100
无满意结贴数:3 无满意结贴分:70
未结的帖子数:1 未结的总分数:20
结贴的百分比:90.00 % 结分的百分比:83.33 %
无满意结贴率:33.33 % 无满意结分率:70.00 %
值得尊敬
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;public class AddValueTableTest extends JFrame { private JTable table = new JTable(); private JButton button = new JButton(); public AddValueTableTest() {
table = new JTable(2, 2) {
@Override
public boolean isCellEditable(int row, int column) {
if (column == 1) {
return true;
}
return super.isCellEditable(row, column);
}
};
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(new JScrollPane(table), BorderLayout.CENTER);
this.getContentPane().add(new JScrollPane(button), BorderLayout.SOUTH);
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JTextField textField = ((JTextField) table.getEditorComponent());
textField.setText(textField.getText() + "+");
}
});
} /**
* @param args
*/
public static void main(String[] args) {
AddValueTableTest frame = new AddValueTableTest();
frame.setVisible(true);
frame.setSize(300, 300);
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
}}
import java.awt.GridBagConstraints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.AbstractTableModel;
public class TestFrame extends JFrame { private JTable table1 = new JTable();
private JButton button1 = new JButton("append");
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
TestFrame tf = new TestFrame();
tf.setVisible(true);
}
public TestFrame(){
setSize(400, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
getContentPane().setLayout(new java.awt.GridBagLayout());
init();
}
public void init(){
table1.setModel(new MyTableModel());
GridBagConstraints gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 1;
gridBagConstraints.gridheight = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
getContentPane().add(table1, gridBagConstraints);
button1.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e) {
int selectedCol = table1.getSelectedColumn();
int selectedRow = table1.getSelectedRow();
Component editor = table1.getEditorComponent();
if(editor != null){
JTextField editorTextField = (JTextField)editor;
editorTextField.setText(editorTextField.getText()+"+");
}else{
table1.getModel().setValueAt(table1.getModel().getValueAt(selectedRow, selectedCol)+"+", selectedRow, selectedCol);
}
table1.updateUI();
}
});
gridBagConstraints = new GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 1;
gridBagConstraints.gridheight = 1;
gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
getContentPane().add(button1, gridBagConstraints);
}
public static class MyTableModel extends AbstractTableModel{
public static final int ROW_COUNT = 2;
public static final int COL_COUNT = 2;
private String[][] values = new String[ROW_COUNT][COL_COUNT];
public int getColumnCount() {
// TODO Auto-generated method stub
return COL_COUNT;
} public int getRowCount() {
// TODO Auto-generated method stub
return ROW_COUNT;
} public Object getValueAt(int rowIndex, int columnIndex) {
return values[rowIndex][columnIndex];
}
public void setValueAt(Object value, int rowIndex, int columnIndex) {
values[rowIndex][columnIndex] = value.toString();
} public boolean isCellEditable(int rowIndex, int columnIndex){
return true;
}
}}