alinzihao
2017-04-07 11:06
采纳率: 71.4%
浏览 1.7k
已采纳

java问题,以下的代码是关于“在jtable中添加按钮”的代码,其中的这句话(如下)是什么意思呢?

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构造方法里面添加,所以这句话有什么用呢?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 毕小宝 2017-04-08 01:25
    已采纳

    首先,你是对的,中间的value==操作是一个三目运算,即问号表达式;
    其次,这句代码其实是在给button设置显示的文本值的,就是按钮上的文字,而panel.add(this.button); 才是添加按钮的操作,注释掉这行就不会被添加到Panel中了。

    点赞 打赏 评论
  • alinzihao 2017-04-07 11:09

    我已经明白了这是一个问号表达式,但是我又有另外一个问题,如果我把这句话删除,那么按钮一样被加到了panel上面。
    那么为什么呢?为什么按钮会被加上去呢?这个重写方法中只有一个return panel,难道这句话有什么玄机吗?

    点赞 打赏 评论

相关推荐 更多相似问题