求一份jtable的单元格中放置了按钮的代码。按钮实现了点击事件,并且有按钮有提示。以前下过一份java日历的源代码。
阿正写的。用的myeclipse工具。里面还有备忘录。     早段时间装系统文件都丢失了很想再参考下那份代码。可惜在网上搜索了很久没有搜索到。有点郁闷。不知道谁有那份代码?或者有类似的代码?帖一份给我好吗?

解决方案 »

  1.   

    jtable的单元格中放置了按钮的代码。按钮实现了点击事件,并且有按钮有提示.
    想参考下
      

  2.   

    实现这种东西,需要你自己完成一个cellrender。然后制定这个cellrender用于什么类型的数据就好了。去看看有关cellrender的内容就知道写了。
      

  3.   

    我已经在jtable里面加了按钮了。问题是点按钮的时候要根据按钮上的文字弹出菜单。隐藏该隐藏的显示该显示的。
      

  4.   

    setActionCommand(name);
    addActionListener(new ActionListener());然后在监听实现里面加入public void actionPerformed(ActionEvent e){
    String strActionCommand = e.getActionCommand();
                    if(strActionCommand.equals(String)
                    {
                          //响应事件
                    }
    }
      

  5.   

    我在jtable 里面放置了按钮。如何获得他?然后给他添加点击事件?好象不能像普通按钮一样添加点击事件?
      

  6.   


    public class MyBtnRenderer extends JButton implements TableCellRenderer {
    private static final long serialVersionUID = 9108456303675104321L; public MyBtnRenderer() {
        setOpaque(true);
      }
      
      public Component getTableCellRendererComponent(JTable table, Object object,
                       boolean isSelected, boolean hasFocus, int row, int column) {
        setHorizontalAlignment(JButton.LEFT);
        setHorizontalTextPosition(JButton.LEFT);
    setVerticalTextPosition(JButton.BOTTOM);
    setBorder(javax.swing.BorderFactory.createEtchedBorder());
        setText( (object ==null)? "" : object.toString() );
        return this;
      }
    }//-------------------------------------------------------
    public class MyBtnEditor extends DefaultCellEditor {
    private static final long serialVersionUID = -9072499029544974642L;
    protected JButton btn;
    private String    text;
    private boolean   flag;

      public MyBtnEditor(JTextField textField) {
        super(textField);
        btn = new JButton();
        btn.setOpaque(true);
        btn.addActionListener(new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            fireEditingStopped();
          }
        });
      }   public Component getTableCellEditorComponent(JTable table, Object object,
                       boolean isSelected, int row, int column) {
    text = (object ==null)? "" : object.toString();
        btn.setText(text);
        btn.setHorizontalAlignment(JButton.LEFT);
        btn.setHorizontalTextPosition(JButton.LEFT);
        btn.setVerticalTextPosition(JButton.BOTTOM);
        flag = true;
        return btn;
      }   public Object getCellEditorValue() {
        return new String(text) ;
      }
      
      public boolean stopCellEditing() {
      flag = false;
        return super.stopCellEditing();
      }   protected void fireEditingStopped() {
        super.fireEditingStopped();
      }
    }//--------------------调用---------
    int vRow=10,columns=10;
    List list;  //// 我已经给list填充了数据
    DefaultTableModel dtm=new DefaultTableModel(vRow, columns);
    Iterator objectIt = list.iterator();
    int i=0,j=0;
    while (objectIt.hasNext()) {
    TbObject object = (TbObject) objectIt.next();
    dtm.setValueAt(object.getName());
    j++;
    if (j==columns) {
    i++;
    j=0;
    }
    }
    final JTable table = new JTable(dtm);
    table.getTableHeader().setVisible(false);  
    table.getTableHeader().setPreferredSize(new Dimension(0, 0));
    table.setRowHeight(h);
    table.setIntercellSpacing(new Dimension(5,5));
    table.setShowHorizontalLines(false);
    table.setShowVerticalLines(false);
    table.setCellSelectionEnabled(true);
        for(int k=0;k<columns;k++){
         table.getColumn(table.getColumnName(k)).setCellRenderer(new MyBtnRenderer());
         table.getColumn(table.getColumnName(k)).setCellEditor(new MyBtnEditor(new JTextField()));
        }
      table.addMouseListener(new MouseListener() {

    @Override
    public void mouseReleased(MouseEvent e) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mousePressed(MouseEvent e) {
       JOptionPane.showMessageDialog(table, table.getSelectedRow()+"/"+table.getSelectedColumn());
    }

    @Override
    public void mouseExited(MouseEvent e) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mouseEntered(MouseEvent e) {
    // TODO Auto-generated method stub

    }

    @Override
    public void mouseClicked(MouseEvent e) {
    // TODO Auto-generated method stub

    }
    });
       roomPanel.add(table,BorderLayout.CENTER);
    } catch (Exception e) {
    }
    }
    //如何获取jtable单元格里的按钮。给他加事件?
      

  7.   

    我建议你写一个BUTTON工厂setText(text); 
    setHorizontalAlignment(JButton.LEFT); 
    setHorizontalTextPosition(JButton.LEFT); 
    setVerticalTextPosition(JButton.BOTTOM);
    setActionCommand(name); 
    addActionListener(new ActionListener()); 这些过程全部放在工厂里面完成,然后直接使用这个工厂的产品就行了
      

  8.   

    就是写一个类继承JButton比如你这个就可以这样写
    public TextButton extends JButton{
        public TextButton(String name){
            super(name);
            initialize(name);
        }    private void initialize(String name){
            setHorizontalAlignment(JButton.LEFT); 
            setHorizontalTextPosition(JButton.LEFT); 
            setVerticalTextPosition(JButton.BOTTOM); 
            setActionCommand(name); 
            addActionListener(new ActionListener()); 
        }
    }
    你最好写个类去实现ActionListener接口,然后在这个类中去实现事件
      

  9.   

    是要监听什么?监听value变化,还是事件?
    public void valueChanged(ListSelectionEvent e){
    int myRow = table.getSelectedRow();
    String field1 = (String) table.getValueAt(row, 1);
    String field2 = (String) table.getValueAt(row, 2);
    String field3 = (String) table.getValueAt(row, 3);
    Integer field4 = (Integer) table.getValueAt(row, 4);
    }
      

  10.   

    我没有那样写了。。
      我直接在 MyBtnEditor 类 implements ActionListener  btn.addActionListener(this);        public void actionPerformed(ActionEvent e) {
    JOptionPane.showMessageDialog(btn, btn.getText());
    }
     事件是出来了但是我要根据按钮的颜色或者图片给事件添加相应的方法。
    可我在调用的时候。
    dtm.setValueAt(object.getName);
    然后给jtabel
    table.getColumn(table.getColumnName(k)).setCellRenderer(new MyBtnRenderer());
    table.getColumn(table.getColumnName(k)).setCellEditor(new MyBtnEditor(new JTextField()));这样才把单元格变成按钮。
    我怎么给按钮设置背景颜色呢?背景颜色要根据 object.getState 来设置。