JTable 单元格中如何显示一个超链接信息?在线等,答出立即给分。 如何能够在 JTable 单元格中显示一个超链接信息,并且能够在鼠标单击这个超链接是打开超链接所指向的页面。 在线等,答出立即给分,十分感谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 重写单元格渲染器,监听鼠标点击事件,调用Proccess的执行方法,调用浏览器打开URL 2楼说的方法就是对的啊。 楼主不妨GOOGLE下,有您想要的 package three;import java.awt.BorderLayout;import java.awt.Component;import java.awt.Cursor;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import javax.swing.AbstractCellEditor;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.table.TableCellEditor;import javax.swing.table.TableColumn;public class Test2 { private JTable table; private JFrame frame; /** * Launch the application * @param args */ public static void main(String args[]) { try { Test2 window = new Test2(); window.frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } /** * Create the application */ public Test2() { initialize(); } /** * Initialize the contents of the frame */ private void initialize() { frame = new JFrame(); frame.setBounds(100, 100, 500, 375); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JScrollPane scrollPane = new JScrollPane(); frame.getContentPane().add(scrollPane, BorderLayout.CENTER); table = new JTable(1,2); scrollPane.setViewportView(table); TableColumn column = table.getColumnModel().getColumn(0); table.setValueAt("http://www.baidu.com", 0, 0); column.setCellEditor(new linkChooserEditor()); }}class linkChooserEditor extends AbstractCellEditor implements TableCellEditor { javax.swing.JLabel link = new javax.swing.JLabel(); Cursor cursor1 = new Cursor(Cursor.HAND_CURSOR); Cursor cursor2 = new Cursor(Cursor.DEFAULT_CURSOR); public linkChooserEditor(){ link.setCursor(cursor2); link.addMouseListener(new MouseListener(){ @Override public void mouseClicked(MouseEvent e) { try { java.lang.Runtime.getRuntime().exec("explorer "+link.getText()); } catch (Exception ef) { ; } } @Override public void mouseEntered(MouseEvent e) { link.setCursor(cursor1); } @Override public void mouseExited(MouseEvent e) { link.setCursor(cursor2); } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseReleased(MouseEvent e) { // TODO Auto-generated method stub } }); } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { // TODO Auto-generated method stub link.setText(value == null ? "" : value.toString()); return link; } @Override public Object getCellEditorValue() { // TODO Auto-generated method stub return link.getText(); }} 算然大家还没有给出最贴切的答案,但是为了答谢大家这么热心的帮助,我还是决定给出所有分数。那么 cpoysy 将拿到最多分,以表感谢,其他人也有鼓励分,再次感谢大家的帮助! 运行jar程序 报错 菜鸟求助 parseDouble的问题 关于子类继承父类方法的 去面试做银行业务的公司,上机考 都考写什么呀? java中新建对话框显示问题 Java中如何设置系统时间 在linux下,将本机的文件拷到不同目录下的 java 程序,该怎么写? 兄弟们,帮我理解一个概念----"SAP",送分呀!!! 高分求网络编程方面的书籍 : 关于鼠标的监听求助 如何能够在 JTable 单元格中显示一个超链接信息?在线等,答出立即给分 谁能给我解释一下JAVA匿名内部类(csdn头一贴,请多关照)
楼主不妨GOOGLE下,有您想要的
import java.awt.Component;
import java.awt.Cursor;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;import javax.swing.AbstractCellEditor;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.TableCellEditor;
import javax.swing.table.TableColumn;public class Test2 { private JTable table;
private JFrame frame; /**
* Launch the application
* @param args
*/
public static void main(String args[]) {
try {
Test2 window = new Test2();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
} /**
* Create the application
*/
public Test2() {
initialize();
} /**
* Initialize the contents of the frame
*/
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 500, 375);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JScrollPane scrollPane = new JScrollPane();
frame.getContentPane().add(scrollPane, BorderLayout.CENTER); table = new JTable(1,2);
scrollPane.setViewportView(table);
TableColumn column = table.getColumnModel().getColumn(0);
table.setValueAt("http://www.baidu.com", 0, 0);
column.setCellEditor(new linkChooserEditor());
}}class linkChooserEditor extends AbstractCellEditor implements TableCellEditor {
javax.swing.JLabel link = new javax.swing.JLabel();
Cursor cursor1 = new Cursor(Cursor.HAND_CURSOR);
Cursor cursor2 = new Cursor(Cursor.DEFAULT_CURSOR); public linkChooserEditor(){
link.setCursor(cursor2);
link.addMouseListener(new MouseListener(){ @Override
public void mouseClicked(MouseEvent e) {
try {
java.lang.Runtime.getRuntime().exec("explorer "+link.getText());
} catch (Exception ef) {
;
}
} @Override
public void mouseEntered(MouseEvent e) {
link.setCursor(cursor1);
} @Override
public void mouseExited(MouseEvent e) {
link.setCursor(cursor2);
} @Override
public void mousePressed(MouseEvent e) {
} @Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
});
}
@Override
public Component getTableCellEditorComponent(JTable table, Object value,
boolean isSelected, int row, int column) {
// TODO Auto-generated method stub
link.setText(value == null ? "" : value.toString());
return link;
} @Override
public Object getCellEditorValue() {
// TODO Auto-generated method stub
return link.getText();
}}
那么 cpoysy 将拿到最多分,以表感谢,其他人也有鼓励分,再次感谢大家的帮助!