gpt4 book ai didi

java 如何在JTable中添加WaterMark

转载 作者:行者123 更新时间:2023-12-01 07:39:39 25 4
gpt4 key购买 nike

我有一个 JTable,我正在尝试在 JTable 后面插入图像作为水印

tblMainView= new JTable(dtModel){

public Component prepareRenderer(TableCellRenderer renderer, int row, int column)
{
Component c = super.prepareRenderer( renderer, row, column);
// We want renderer component to be transparent so background image is visible
if( c instanceof JComponent )
((JComponent)c).setOpaque(true);
return c;
}
ImageIcon image = new ImageIcon( "images/watermark.png" );

public void paint( Graphics g )
{
// First draw the background image - tiled
Dimension d = getSize();
for( int x = 0; x < d.width; x += image.getIconWidth() )
for( int y = 0; y < d.height; y += image.getIconHeight() )
g.drawImage( image.getImage(), x, y, null, null );
// Now let the regular paint code do it's work
super.paint(g);
}


public boolean isCellEditable(int rowIndex, int colIndex) {
return false;
}
public Class getColumnClass(int col){
if (col == 0)
{
return Icon.class;
}else if(col==7){
return String.class;
}
else
return String.class;

}
public boolean getScrollableTracksViewportWidth() {
if (autoResizeMode != AUTO_RESIZE_OFF) {
if (getParent() instanceof JViewport) {
return (((JViewport)getParent()).getWidth() > getPreferredSize().width);
}
}
return false;
}

};

以上是c我的 JTable 的颂歌,但水印不可见;让我补充一下,稍后我将此 JTable 放在 JScrollPaneJSplitPane 中。

最佳答案

两种可能的解决方案,但我不知道哪一种。 :D 我认为第一种方法成功的机会最高。

第一种方法

重写您的paintComponent(Graphics g)方法:

public void paintComponent(Graphics g)
{
//First super
super.paintComponent(g);

g.drawImage(0, 0, getWidth(), getHeight());
}

第二种方法

将 JTable 不透明设置为 false:table.setOpaque(false);
重写您的 paintComponent(Graphics g) 方法:

public void paintComponent(Graphics g)
{
//First draw
g.drawImage(0, 0, getWidth(), getHeight());

super.paintComponent(g);
}

关于java 如何在JTable中添加WaterMark,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6763368/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com