package home;
import java.awt.Component;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.table.TableCellRenderer;
public class JTableButton implements TableCellRenderer
{
private JPanel panel;
private JButton button;
private JFrame frame ;
public JTableButton()
{
initButton();
panel = new JPanel();
// panel使用绝对定位,这样button就不会充满整个单元格。
panel.setLayout(null);
// 添加按钮。
panel.add(this.button);
frame = new JFrame () ;
frame.add(this.panel) ;
frame.setVisible(true) ;
frame.setPreferredSize(new Dimension(500,500)) ;
frame.pack() ;
}
private void initButton()
{
button = new JButton("aaa");
// 设置按钮的大小及位置。
button.setBounds(0, 0, 50, 15);
// 在渲染器里边添加按钮的事件是不会触发的
// this.button.addActionListener(new ActionListener()
// {
//
// public void actionPerformed(ActionEvent e)
// {
// // TODO Auto-generated method stub
// }
// });
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row,
int column)
{
// 只为按钮赋值即可。也可以作其它操作,如绘背景等。
button.setText(value == "" ? "" : String.valueOf(value));
return panel;
}
public static void main (String [] args)
{
new JTableButton () ;
}
}
button.setText(value == "" ? "" : String.valueOf(value)); 就是这一句,里面的那一大行是什么意思呢?我大概理解成返回value的字符串表示形式,但是 value==“”?“”这里面如果写入字符串又没有用啊。。如果我想往按钮里面添加字,那么只有在JButton构造方法里面添加,所以这句话有什么用呢?