如题,整理一些Java编程中Swing方面的小技巧,是我自己的项目中用到的,大部分是网上找的,也有些微的原创。这些东西本身没有什么难度,不过不知道的话也确实做不出这些效果,所以整理并记录下来。
//table内容居中
jTable1 = new JTable(){
public TableCellRenderer getCellRenderer(int row, int column) {
TableCellRenderer renderer = super.getCellRenderer(row, column);
if (renderer instanceof JLabel) {
((JLabel) renderer).setHorizontalAlignment(JLabel.CENTER);
}
return renderer;
}
};
//设置JTable的ColumnName的样式(放在界面初始化之前)
UIManager. put( "TableHeader.font" ,new Font("Monospaced" ,Font.PLAIN,20));
//JTable自动调整列宽
public class ColumnResizer {
public static void adjustColumnPreferredWidths(JTable table){
TableColumnModel columnModel=table.getColumnModel();
for(int col=0;col<table.getColumnCount();col++){
int maxwidth=0;
for(int row=0;row<table.getRowCount();row++){
TableCellRenderer rend=table.getCellRenderer(row, col);
Object value=table.getValueAt(row, col);
Component comp=rend.getTableCellRendererComponent(table, value, false, false, row, col);
maxwidth=Math. max(comp.getPreferredSize().width,maxwidth);
}
TableColumn column=columnModel.getColumn(col);
TableCellRenderer headerRenderer=column.getHeaderRenderer();
if(headerRenderer==null){
headerRenderer=table.getTableHeader().getDefaultRenderer();
}
Object headerValue=column.getHeaderValue();
Component headerComp=headerRenderer.getTableCellRendererComponent(table, headerValue, false , false, 0, col);
maxwidth=Math. max(maxwidth, headerComp.getPreferredSize().width );
column.setPreferredWidth(maxwidth);
}
}
}
//设置JTabbedPane的样式
public class JTabPaneUI extends BasicTabbedPaneUI{
protected int calculateTabWidth(int tabPlacement, int tabIndex, FontMetrics metrics){
return super .calculateTabWidth(tabPlacement, tabIndex, metrics)+40;
}
protected int calculateTabHeight(int tabPlacement, int tabIndex, int fontHeight){
return super .calculateTabHeight(tabPlacement, tabIndex, fontHeight)+20;
}
}
//鼠标停留后显示贴士(Jbutton为例,贴士支持html语言)
buttons [i].setToolTipText(html.CovertDestionString(listcompany.get(i).getCompanyInfo()));
//java中查看图片,如果查看一次之后图片内容更改了,那么再次查看图片还会显示第一次的图片需进行重新读入(label为JLabel)
public void repaintlabel(String path){
if(path!=null && !path.equals("")){
try {
icon = new ImageIcon(ImageIO.read (new File(path)));
} catch (IOException e) {
e.printStackTrace();
}
label.setIcon(icon );
} else{
label.setIcon(new ImageIcon("images/test/暂无图片.jpg"));
}
}