这个是sun提供的例子
import javax.swing.JTable;
import javax.swing.table.AbstractTableModel;
import javax.swing.JScrollPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.JOptionPane;
import java.awt.*;
import java.awt.event.*;
public class TableDemo extends JFrame {
   private boolean DEBUG = true;   public TableDemo() {
       super("TableDemo");       MyTableModel myModel = new MyTableModel();
       JTable table = new JTable(myModel);
       table.setPreferredScrollableViewportSize(new Dimension(500, 70));       //Create the scroll pane and add the table to it. 
       JScrollPane scrollPane = new JScrollPane(table);       //Add the scroll pane to this window.
       getContentPane().add(scrollPane, BorderLayout.CENTER);       addWindowListener(new WindowAdapter() {
           public void windowClosing(WindowEvent e) {
               System.exit(0);
           }
       });
   }   class MyTableModel extends AbstractTableModel {
       final String[] columnNames = {"First Name", 
                                     "Last Name",
                                     "Sport",
                                     "# of Years",
                                     "Vegetarian"};
       final Object[][] data = {
           {"Mary", "Campione", 
            "Snowboarding", new Integer(5), new Boolean(false)},
           {"Alison", "Huml", 
            "Rowing", new Integer(3), new Boolean(true)},
           {"Kathy", "Walrath",
            "Chasing toddlers", new Integer(2), new Boolean(false)},
           {"Mark", "Andrews",
            "Speed reading", new Integer(20), new Boolean(true)},
           {"Angela", "Lih",
            "Teaching high school", new Integer(4), new Boolean(false)}
       };       public int getColumnCount() {
           return columnNames.length;
       }
       
       public int getRowCount() {
           return data.length;
       }       public String getColumnName(int col) {
           return columnNames[col];
       }       public Object getValueAt(int row, int col) {
           return data[row][col];
       }       /*
        * JTable uses this method to determine the default renderer/
        * editor for each cell.  If we didn't implement this method,
        * then the last column would contain text ("true"/"false"),
        * rather than a check box.
        */
       public Class getColumnClass(int c) {
           return getValueAt(0, c).getClass();
       }       /*
        * Don't need to implement this method unless your table's
        * editable.
        */
       public boolean isCellEditable(int row, int col) {
           //Note that the data/cell address is constant,
           //no matter where the cell appears onscreen.
           if (col < 2) { 
               return false;
           } else {
               return true;
           }
       }       /*
        * Don't need to implement this method unless your table's
        * data can change.
        */
       public void setValueAt(Object value, int row, int col) {
           if (DEBUG) {
               System.out.println("Setting value at " + row + "," + col
                                  + " to " + value
                                  + " (an instance of " 
                                  + value.getClass() + ")");
           }           if (data[0][col] instanceof Integer) {
               //If we don't do something like this, the column
               //switches to contain Strings.
               //XXX: See TableEditDemo.java for a better solution!!!
               try {
                   data[row][col] = new Integer((String)value);
               } catch (NumberFormatException e) {
                   if (SwingUtilities.isEventDispatchThread()) {
                       JOptionPane.showMessageDialog(TableDemo.this,
                           "The \"" + getColumnName(col)
                           + "\" column accepts only integer values.");
                   } else {
                       System.err.println("User attempted to enter non-integer"
                                      + " value (" + value 
                                      + ") into an integer-only column.");
                   }
               }
           } else {
               data[row][col] = value;
           }           if (DEBUG) {
               System.out.println("New value of data:");
               printDebugData();
           }
       }       private void printDebugData() {
           int numRows = getRowCount();
           int numCols = getColumnCount();           for (int i=0; i < numRows; i++) {
               System.out.print("    row " + i + ":");
               for (int j=0; j < numCols; j++) {
                   System.out.print("  " + data[i][j]);
               }
               System.out.println();
           }
           System.out.println("--------------------------");
       }
   }   public static void main(String[] args) {
       TableDemo frame = new TableDemo();
       frame.pack();
       frame.setVisible(true);
   }
}
  public class NumberCellRenderer extends DefaultTableCellRenderer{
  public NumberCellRenderer(){
          setHorizontalAlignment(SwingConstants.RIGHT);
  }
}
//然后为JTable中需要设成右对齐的栏位设置该Renderer

解决方案 »

  1.   

    public class NumberCellRenderer extends DefaultTableCellRenderer{
      public NumberCellRenderer(){
              setHorizontalAlignment(SwingConstants.RIGHT);
      }table.setDefaultRenderer(Number.class, new NumberCellRenderer()) 
      

  2.   

    jdk带的Demo里头不是有一个Sample,叫做SwingSet2嘛。
    它就是右对齐的
      

  3.   

    给一个地址,jtable实用大全
    http://www2.gol.com/users/tame/swing/examples/SwingExamples.html
      

  4.   

    楼主:
       我发现zoutaosss(虾米) 同志 跟你真的很好的哥们啊, 你的问题不到10分钟他就回(昨天我统计了一下,好像有7、8个左右,都是100分的) , 他的问题你也是不到10分钟就回,而且肯定是第一个。 昨天一天就应该连长2级了吧?   大家搜索一下他们俩的贴子,如果我说错了,我就不在这混了。
      

  5.   

    farawayzheng_necas(遥远) :虾米是我的好朋友,但我们不是一个人,我常向他问问题,我是给了他很多分,但不光为了分,你又为什么要这样多管闲事呢?有本事你也回答啊,我同样会给你。