只有用鼠标监听,JTable提供的监听器都是基于它的数据模型的.
解决方案 »
- 怎么我用hibernate生成的DAO不是继承HibernateDaoSupport
- 我也遇到类似的问题,请高手指点啊!
- xmlHttp.responseXMl 获取不到值,- ajax !!!
- 大型新闻网站前台页面读去数据库的方法?
- java.lang.NoSuchFieldError: sqlResultSetMappings
- 如何配置使用WEBLOGIC的数据库连接池???
- struts 用html:button 如何实现点击按钮是时候 开发aa.jsp
- 500分求助TOMCAT必须删除临时文件才不出错的问题.
- weblogic7.0 重新部署时发生如下错误!。。。。。。。。。
- webservice 通过@Autowired 调用业务层
- 高手解答:手机中J2ME做服务器,服务器中J2SE做客户端的socket应用出现的问题
- 在flex中怎么访问java servlet的session data?知道的来讲一下,不知道的帮忙up一下,来者有分..
import javax.swing.*;
import java.awt.*;
import com.borland.jbcl.layout.*;
import javax.swing.border.*;
import java.awt.event.*;
import java.text.*;
import javax.swing.event.*;
import javax.swing.table.*;
import java.util.Vector;public class MyTable extends JFrame {
private JPanel jPanel1 = new JPanel();
private JPanel jPanel2 = new JPanel();
private BorderLayout borderLayout1 = new BorderLayout();
private JButton cancelButton = new JButton();
private JButton okButton = new JButton();
JPanel jPanel3 = new JPanel();
Border border2;
JScrollPane jScrollPane1 = new JScrollPane();
BorderLayout borderLayout2 = new BorderLayout();
JTable table = new JTable();
Border border3;
Border border4;
JTextField textField=new JTextField();
public MyTable(Frame frame,String title,boolean model) {
// super(frame,title,model);
try {
jbInit();
pack();
init();
// this.setLocationRelativeTo(frame);
}
catch(Exception e) {
e.printStackTrace();
}
}
private void jbInit() throws Exception { java.awt.datatransfer.StringSelection ss=new java.awt.datatransfer.StringSelection("你的字符串");
java.awt.datatransfer.Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(ss,ss); border2 = BorderFactory.createEmptyBorder(10,10,5,10);
border3 = BorderFactory.createEmptyBorder(10,10,5,10);
border4 = BorderFactory.createEmptyBorder(0,0,5,0);
jPanel1.setBorder(border3);
jPanel1.setLayout(borderLayout1);
jPanel2.setBorder(BorderFactory.createEtchedBorder());
cancelButton.setText("关闭");
cancelButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
cancelButton_actionPerformed(e);
}
});
okButton.setText("确定");
okButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(ActionEvent e) {
okButton_actionPerformed(e);
}
});
jPanel3.setLayout(borderLayout2);
jPanel3.setBorder(border4);
jScrollPane1.setPreferredSize(new Dimension(454, 200));
table.addInputMethodListener(new java.awt.event.InputMethodListener() {
public void inputMethodTextChanged(InputMethodEvent e) {
table_inputMethodTextChanged(e);
}
public void caretPositionChanged(InputMethodEvent e) {
System.out.println("to that");
}
});
table.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(MouseEvent e) {
table_mouseClicked(e);
}
});
table.addFocusListener(new java.awt.event.FocusAdapter() {
public void focusGained(FocusEvent e) {
table_focusGained(e);
}
});
this.getContentPane().add(jPanel1, BorderLayout.CENTER);
jPanel1.add(jPanel2, BorderLayout.SOUTH);
jPanel2.add(okButton, null);
jPanel2.add(cancelButton, null);
jPanel1.add(jPanel3, BorderLayout.CENTER);
jPanel3.add(jScrollPane1, BorderLayout.CENTER);
jScrollPane1.getViewport().add(table, null);
}
public void init(){
javax.swing.table.DefaultTableModel tableModel=new BaseTableModel(makeColumns(),makeDatas());
table.setModel(tableModel);
MyTableRenderer render=new MyTableRenderer(5,5);
// table.setDefaultRenderer(Integer.class,render);
table.setDefaultRenderer(String.class,render);
}
public Vector makeColumns(){
Vector column=new Vector();
column.add("aaa");
column.add("bbb");
column.add("ccc");
column.add("ddd");
column.add("eee");
return column;
}
public Vector makeDatas(){ Vector data=new Vector();
for (int i = 0; i < 5; i++) { Vector row=new Vector();
row.addElement(new String("1"));
row.addElement(new String("1"));
row.addElement(new String("1"));
row.addElement(new String("1"));
row.addElement(new String("1"));
data.add(row);
}
return data;
} public static void main(String []arg){
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
}
catch(Exception e) {
e.printStackTrace();
}
MyTable mtf= new MyTable(null,"",false); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension frameSize = mtf.getSize();
if (frameSize.height > screenSize.height) {
frameSize.height = screenSize.height;
}
if (frameSize.width > screenSize.width) {
frameSize.width = screenSize.width;
}
mtf.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2); mtf.setVisible(true);
mtf.setTitle("第二行和第四列可修改") ; mtf.show();
mtf.pack();
} void cancelButton_actionPerformed(ActionEvent e){
System.exit(0);
} void okButton_actionPerformed(ActionEvent e) { }
void table_inputMethodTextChanged(InputMethodEvent e) {
}
protected void processWindowEvent(WindowEvent e) {
if (e.getID() == WindowEvent.WINDOW_CLOSING) cancelButton_actionPerformed(null);
else super.processWindowEvent(e);
} void table_mouseClicked(MouseEvent e) {
if(e.getClickCount()==1) System.out.println("to that");
} void table_focusGained(FocusEvent e) {
System.out.println("focusGained");
} void table_ancestorAdded(AncestorEvent e) {
System.out.println("ancestor");
}
}class BaseTableModel extends DefaultTableModel implements TableModelListener{
public BaseTableModel() {
super();
}
public BaseTableModel(Vector columnNames, Vector data){
super(data, columnNames);
} public void tableChanged(TableModelEvent e) { fireTableChanged(e); } public boolean isCellEditable(int row,int column){
if(column==3||row==1) return true;
return false;
}
}
class MyTableRenderer extends JLabel implements TableCellRenderer{
public MyTableRenderer(int rowCount,int colCount){
super();
this.setOpaque(true);
}
public Component getTableCellRendererComponent(
JTable table,Object value,boolean isSelected,
boolean hasFocus,int row,int col){
this.setText(value.toString());
setFont(new Font("SansSerif",0,12));
setHorizontalAlignment(SwingConstants.CENTER);
if(isSelected){
super.setBackground(table.getSelectionBackground());
this.setForeground(Color.red);
}else{
this.setBackground(Color.orange);
this.setForeground(Color.red);
}
if (hasFocus) {
setBorder( new LineBorder(new Color(0,200,0),1) );
}else{
setBorder(new EmptyBorder(1, 1, 1, 1));
}
if(table.getModel().isCellEditable(row,col)){
this.setBackground(Color.white);
this.setForeground(Color.black);
}
return this;
}
}