JTABLE中如何让数字右对齐? 为了便于比较查看数字的大小,JTABLE中如何让数字右对齐?同时小弟也想知道怎样让文本居中对齐? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 写一个类继承 javax.swing.table.DefaultTAbleCellRendererpublic class XxxRenderer extends DefaultTableCellRenderer { public XxxRenderer (){ super(); setHorizentalAlignment(javax.swing.SwingConstants.RIGHT); } public void setValue(Object value){ //这里格式化你的数据 super.setValue(value); } }.......然后 table.setDefaultRenderer(Float.class,new XxxRenderer ()); 好像不关用啊还有别的什么要求吗比如说对Jtable的构造方式了。 http://community.csdn.net/Expert/TopicView.asp?id=4407145 谢了楼上的各位。但小弟还是没有实现。请各位帮我看看是怎么回事package java试验1;import javax.swing.table.DefaultTableCellRenderer;import javax.swing.*;import java.awt.*;import javax.swing.table.DefaultTableModel;public class JtableFrame extends JFrame { BorderLayout borderLayout1 = new BorderLayout(); JTable jTable1 = new JTable(); DefaultTableModel dm=new DefaultTableModel(); String[] columname={"aa","bb","cc"}; Object [][] data={{"11","22"},{"33","44"}}; public JtableFrame() { try { jbInit(); } catch(Exception ex) { ex.printStackTrace(); } } void jbInit() throws Exception { jTable1.setDefaultRenderer(Float.class,new Test ()); dm = new DefaultTableModel(data, columname); dm.setValueAt("111", 1, 1); jTable1 = new JTable(dm); jTable1.setEnabled(true); jTable1.editCellAt(1, 1); System.out.println(jTable1.getTableHeader()); System.out.println(jTable1.getValueAt(1, 1)); // jTable1.setDefaultRenderer(Float.class,new NumberRenderer ());//为什么不其作用呢? jTable1.setDefaultRenderer(Float.class,new Test());//为什么不其作用呢? this.setBounds(100,100,400,400); this.getContentPane().setLayout(borderLayout1); this.getContentPane().add(jTable1, BorderLayout.CENTER); } public static void main(String[] args) { JtableFrame jtable = new JtableFrame(); jtable.setVisible(true); }}class Test extends DefaultTableCellRenderer{ /* (non-Javadoc) * @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int) */ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { JLabel label = (JLabel)super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column); if (value instanceof Integer){ label.setHorizontalAlignment(SwingConstants.RIGHT); }else{ setHorizontalAlignment(SwingConstants.CENTER); } return label; }}class NumberRenderer extends DefaultTableCellRenderer { public NumberRenderer (){ super(); setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); } public void setValue(Object value){ //这里格式化你的数据 super.setValue("666"); }} jTable1.setDefaultRenderer(Float.class,new Test ());dm = new DefaultTableModel(data, columname);dm.setValueAt("111", 1, 1);jTable1 = new JTable(dm);=======================================================这段代码有问题。jTable1.setDefaultRenderer(Float.class,new Test ());放到jTable1 = new JTable(dm);后面而且:如果你要使用Float.class,下面的Object [][] data={{"11","22"},{"33","44"}};也不对。Object [][] data={{Float.valueof("11"),Float.valueof("11")}};而render里头的instanceof Integer应该改成instanceof Float java向Access添加数据时出现乱码 java布局 借问一下,JAVA里有没有这样的一个数据结构????介于ArrayList和Hashtable的.. 关于java电梯系统请教 比较JAVA和C++里面的字符串,字符数组? 谁知道优化内存都 有哪些方法 PDF格式为CMYK时转为图片颜色问题 一个JBuilder8 奇怪的问题。 请问我怎样获得文件在磁盘中的绝对路径? 面试题求解 困扰我多时的简单初级问题!回答就给分! 忽然想起来一个小问题,不知道哪位知道,帮忙答答
super();
setHorizentalAlignment(javax.swing.SwingConstants.RIGHT);
} public void setValue(Object value){
//这里格式化你的数据
super.setValue(value);
}
}.......然后 table.setDefaultRenderer(Float.class,new XxxRenderer ());
还有别的什么要求吗
比如说对Jtable的构造方式了。
package java试验1;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.*;
import java.awt.*;
import javax.swing.table.DefaultTableModel;public class JtableFrame extends JFrame {
BorderLayout borderLayout1 = new BorderLayout();
JTable jTable1 = new JTable();
DefaultTableModel dm=new DefaultTableModel();
String[] columname={"aa","bb","cc"};
Object [][] data={{"11","22"},{"33","44"}};
public JtableFrame() {
try {
jbInit();
}
catch(Exception ex) {
ex.printStackTrace();
}
} void jbInit() throws Exception {
jTable1.setDefaultRenderer(Float.class,new Test ());
dm = new DefaultTableModel(data, columname);
dm.setValueAt("111", 1, 1);
jTable1 = new JTable(dm);
jTable1.setEnabled(true);
jTable1.editCellAt(1, 1);
System.out.println(jTable1.getTableHeader());
System.out.println(jTable1.getValueAt(1, 1));
// jTable1.setDefaultRenderer(Float.class,new NumberRenderer ());//为什么不其作用呢?
jTable1.setDefaultRenderer(Float.class,new Test());//为什么不其作用呢?
this.setBounds(100,100,400,400);
this.getContentPane().setLayout(borderLayout1);
this.getContentPane().add(jTable1, BorderLayout.CENTER); } public static void main(String[] args) {
JtableFrame jtable = new JtableFrame();
jtable.setVisible(true);
}
}
class Test extends DefaultTableCellRenderer{ /* (non-Javadoc)
* @see javax.swing.table.TableCellRenderer#getTableCellRendererComponent(javax.swing.JTable, java.lang.Object, boolean, boolean, int, int)
*/
public Component getTableCellRendererComponent(JTable table,
Object value,
boolean isSelected,
boolean hasFocus,
int row,
int column) {
JLabel label = (JLabel)super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
if (value instanceof Integer){
label.setHorizontalAlignment(SwingConstants.RIGHT);
}else{
setHorizontalAlignment(SwingConstants.CENTER);
}
return label;
}}
class NumberRenderer extends DefaultTableCellRenderer { public NumberRenderer (){
super();
setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
} public void setValue(Object value){
//这里格式化你的数据
super.setValue("666");
}}
dm = new DefaultTableModel(data, columname);
dm.setValueAt("111", 1, 1);
jTable1 = new JTable(dm);=======================================================
这段代码有问题。
jTable1.setDefaultRenderer(Float.class,new Test ());
放到jTable1 = new JTable(dm);后面而且:如果你要使用Float.class,下面的
Object [][] data={{"11","22"},{"33","44"}};也不对。
Object [][] data={{Float.valueof("11"),Float.valueof("11")}};
而render里头的instanceof Integer应该改成instanceof Float