重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
你可以参考下这个代码:
目前创新互联已为上千家的企业提供了网站建设、域名、网站空间、网站托管维护、企业网站设计、正安网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
Workbook workbook=new HSSFWorkbook(); // 定义一个新的工作簿
Sheet sheet=workbook.createSheet("第一个Sheet页"); // 创建第一个Sheet页
Row row=sheet.createRow(1); // 创建一个行
Cell cell=row.createCell(1); // 创建一个单元格
cell.setCellValue(4);
// 设置单元格边框
CellStyle cellStyle=workbook.createCellStyle();
cellStyle.setBorderBottom(CellStyle.BORDER_THIN); // 底部边框
cellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex()); // 底部边框颜色
cellStyle.setBorderLeft(CellStyle.BORDER_THIN); // 左边边框
cellStyle.setLeftBorderColor(IndexedColors.GREEN.getIndex()); // 左边边框颜色
cellStyle.setBorderRight(CellStyle.BORDER_THIN); // 右边边框
cellStyle.setRightBorderColor(IndexedColors.BLUE.getIndex()); // 右边边框颜色
cellStyle.setBorderTop(CellStyle.BORDER_MEDIUM_DASHED); // 上边边框
cellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex()); // 上边边框颜色
你跑下下面的代码试下吧:
public TestExcel(){
createExcelFile();
}
private void createExcelFile() {
HSSFWorkbook hwb = new HSSFWorkbook();
HSSFSheet sheet = hwb.createSheet("test sheet");
//创建一个样式
HSSFCellStyle style = hwb.createCellStyle();
//设置边框样式
style.setBorderTop(HSSFCellStyle.BORDER_THIN);
style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
style.setBorderRight(HSSFCellStyle.BORDER_THIN);
//设置边框颜色
style.setTopBorderColor(HSSFColor.BLACK.index);
style.setBottomBorderColor(HSSFColor.BLACK.index);
style.setLeftBorderColor(HSSFColor.BLACK.index);
style.setRightBorderColor(HSSFColor.BLACK.index);
for(int j=0;j5;j++){
HSSFRow row = sheet.createRow(j);
for(int i=0;i10;i++){
HSSFCell cell = row.createCell(i);
cell.setCellStyle(style);
cell.setCellValue(j+"*"+i);
}
}
File file = new File("./test.xls");
try {
FileOutputStream fos = new FileOutputStream(file);
hwb.write(fos);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
如果你想给窗口内部加上一个边框,可以在窗口内加一个Panel,设置Panel的边框就行。
如果你想修改操作系统提供的边框颜色,是做不到的,但是可以去掉系统提供的边框,重写paint方法自己模拟一个:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.LineBorder;
public class MyFrame {
public static void main(String[] args) {
JFrame frame1 = new JFrame();
frame1.setBounds(400, 300, 200, 200);
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setBorder(new LineBorder(Color.red));
frame1.add(panel);
frame1.setVisible(true);
JFrame frame2 = new JFrame() {
public void paint(Graphics g) {
super.paint(g);
Rectangle rect = this.getBounds();
int width = (int) rect.getWidth() - 1;
int height = (int) rect.getHeight() - 1;
g.setColor(Color.red);
g.drawRect(0, 0, width, height);
}
};
frame2.setBounds(650, 300, 200, 200);
frame2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame2.setUndecorated(true);
frame2.setVisible(true);
}
}
创建一个类继承自 DefaultTableCellRenderer,只需要覆盖它的 getTableCellRendererComponent(JTable, Object, boolean, boolean, int, int) 方法里,从 super.getTableCellRendererComponent(...) 得到一个组件,然后设置它的边框并加色彩。
在这个 get 方法中,它已经告诉了你 row 和 column 你可以知道应该画什么边框,要强调的单元格就画红框,不用强调的单元格就不要还原边框到原来的样子,当然像你的例子中,一个单元格只画一半的边框的情况似乎需要定制,Swing 不会自带这种边框。而定制边框则是需要自己创建一个类,模仿
Swing
自带的像
BevelBorder.