Topic: 关于getHeaderRenderer()应用的问题?急急急 |
Print this page |
1.关于getHeaderRenderer()应用的问题?急急急 | Copy to clipboard |
Posted by: sy0300014460 Posted on: 2005-05-06 21:13 请各位大侠帮忙看看以下代码,为什么总提示NullPointerException异常,并且columnHeaderWidth(TableColumn col)方法中的renderer总是返回null值,请问各位大侠如何解决,有什么好的方法吗?希望能得到各位大侠的一些宝贵经验,在此我先谢谢大家了!!! import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.table.*; import java.util.*; public class Test3 extends JFrame { Object[] columnNames = {"First Name", "MI", "Last Name"}; Object[][] names = {{ "Lynn", "我们", "Seckinger" }, { "Carol", "R.", "Seckinger" }, { "Roy", "D.", "Martin" }, { "Bill","O.","Veryveryveryverylonglastnjfdsfjla" }, { "Richard", "A.", "Tattersall" }, { "Philip", "B.", "Edwards" }, { "Moore", "T.", "Moore" }, { "Lynn", "M.", "Seckinger" }, { "Carol", "R.", "Seckinger" }, { "Roy", "D.", "Martin" }, { "Bill", "O.", "Veryveryveryverylonglastname" }, { "Richard", "A.", "Tattersall" }, { "Philip", "B.", "Edwards" }, { "Moore", "T.", "Moore" }}; JTable table = new JTable(names, columnNames); public Test3() { TableColumn mid = table.getColumnModel().getColumn(1); TableColumn last = table.getColumnModel().getColumn(2); int midWidth = getPreferredWidthForColumn(mid), lastWidth = getPreferredWidthForColumn(last); table.sizeColumnsToFit(0); getContentPane().add(new JScrollPane(table),BorderLayout.CENTER); } public int getPreferredWidthForColumn(TableColumn col) { int hw = columnHeaderWidth(col), // hw = header width cw = widestCellInColumn(col); // cw = column width return hw > cw ? hw : cw; } private int columnHeaderWidth(TableColumn col) { TableCellRenderer renderer = col.getHeaderRenderer();//?????return null Component comp = renderer.getTableCellRendererComponent( table, col.getHeaderValue(),false, false, 0, 0); return comp.getPreferredSize().width; } private int widestCellInColumn(TableColumn col) { int c = col.getModelIndex(), width=0, maxw=0; for(int r=0; r < table.getRowCount(); ++r) { TableCellRenderer renderer = table.getCellRenderer(r,c); Component comp = renderer.getTableCellRendererComponent( table, table.getValueAt(r,c), false, false, r, c); width = comp.getPreferredSize().width; maxw = width > maxw ? width : maxw; } return maxw; } public static void main(String args[]) { GJApp.launch( new Test3(),"Setting Column Widths",100,100,340,140); } } class GJApp extends WindowAdapter { static private JPanel statusArea = new JPanel(); static private JLabel status = new JLabel(" "); static private ResourceBundle resources; public static void launch( final JFrame f, String title, final int x, final int y, final int w, int h) { launch(f,title,x,y,w,h,null); } public static void launch( final JFrame f, String title, final int x, final int y, final int w, int h, String propertiesFilename) { f.setTitle(title); f.setBounds(x,y,w,h); f.setVisible(true); statusArea.setBorder(BorderFactory.createEtchedBorder()); statusArea.setLayout(new FlowLayout(FlowLayout.LEFT,0,0)); statusArea.add(status); status.setHorizontalAlignment(JLabel.LEFT); f.setDefaultCloseOperation( WindowConstants.DISPOSE_ON_CLOSE); if(propertiesFilename != null) { resources = ResourceBundle.getBundle( propertiesFilename, Locale.getDefault()); } f.addWindowListener(new WindowAdapter() { public void windowClosed(WindowEvent e) { System.exit(0); } }); } static public JPanel getStatusArea() { return statusArea; } static public void showStatus(String s) { status.setText; } static Object getResource(String key) { if(resources != null) { return resources.getString(key); } return null; } } |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |