实现Java JTable的应用案例
2024-10-16 09:03:08
代码如下
import Java.awt.Component;
import java.awt.Dimension;
import java.awt.FontMetrics; import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableCellRenderer;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableColumnModel; public class Main extends DefaultTableCellRenderer {
private static final long serialVersionUID = 1L; public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column) { JTableHeader header = table.getTableHeader();
setForeground(header.getForeground());
setBackground(header.getBackground());
setFont(header.getFont());
setOpaque(true);
setBorder(UIManager.getBorder("TableHeader.cellBorder")); // 得到列的宽度
TableColumnModel columnModel = table.getColumnModel();
int width = columnModel.getColumn(column).getWidth(); value = getShowValue(value.toString(), width);
setText(value.toString());
setSize(new Dimension(width, this.getHeight())); setHorizontalAlignment(JLabel.CENTER); return this;
} private Object getShowValue(String value, int colWidth) {
FontMetrics fm = this.getFontMetrics(this.getFont());
int width = fm.stringWidth(value.toString());
int test = fm.stringWidth("好");
System.out.println(test * value.length());
System.out.println(width);
if (width < colWidth) {
return value;
}
StringBuffer sb = new StringBuffer("<html>");
char str;
int tempW = 0;
for (int i = 0; i < value.length(); i++) {
str = value.charAt(i);
tempW += fm.charWidth(str);
if (tempW > colWidth) {
sb.append("<br>");
tempW = 0;
}
sb.append(str);
}
sb.append("</html>");
return sb.toString();
}
}
运行结果
<ignore_js_op>
详细说明:http://java.662p.com/thread-3683-1-1.html
最新文章
- c 头文件<;ctype.h>;(一)
- fifo write
- 2014 Asia AnShan Regional Contest --- HDU 5078 Osu!
- jquery之别踩白块游戏的实现
- dede顶级栏目直接显示内容
- POJ2125 Destroying The Graph (最小点权覆盖集)(网络流最小割)
- IL指令集(转)
- jQuery相关知识
- 【LeetCode】Sum Root to Leaf Numbers
- EF LINQ根据某个字段去除重复行
- php倒计时防刷新
- APP网络测试要点和弱网模拟
- velocity学习总结
- jpa的查询语法
- Python内存优化:Profile,slots,compact dict
- vsftpd控制用户禁止访问上级目录 只能访问自己目录
- Cordova开发App入门之创建android项目
- air报错 Error: Error #3000: Illegal path name
- curl基本使用
- Qt的安装和使用中的常见问题(简略版)