Delete jTable row with jButton using cellEditor();












1















I want to add jButton inside column and then delete row using added jButton I've tried some stackoverflow questions and have following code but that doesn't deleting a row.



public class NewJFrame extends javax.swing.JFrame {

JButton jb = new JButton();

public NewJFrame() {
initComponents();

jTable.getColumn(" ").setCellRenderer(new TableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
jb.setText("Delete");
return jb;
}
});

jTable.getColumn(" ").setCellEditor(new TableCellEditor() {
@Override
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
if (isSelected) {
jb.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
jTable = (JTable) e.getSource();
int modelRow = Integer.valueOf(e.getActionCommand());
((DefaultTableModel) jTable.getModel()).removeRow(modelRow);
}
});
}
return jb;
}









share|improve this question





























    1















    I want to add jButton inside column and then delete row using added jButton I've tried some stackoverflow questions and have following code but that doesn't deleting a row.



    public class NewJFrame extends javax.swing.JFrame {

    JButton jb = new JButton();

    public NewJFrame() {
    initComponents();

    jTable.getColumn(" ").setCellRenderer(new TableCellRenderer() {
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
    jb.setText("Delete");
    return jb;
    }
    });

    jTable.getColumn(" ").setCellEditor(new TableCellEditor() {
    @Override
    public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
    if (isSelected) {
    jb.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
    jTable = (JTable) e.getSource();
    int modelRow = Integer.valueOf(e.getActionCommand());
    ((DefaultTableModel) jTable.getModel()).removeRow(modelRow);
    }
    });
    }
    return jb;
    }









    share|improve this question



























      1












      1








      1








      I want to add jButton inside column and then delete row using added jButton I've tried some stackoverflow questions and have following code but that doesn't deleting a row.



      public class NewJFrame extends javax.swing.JFrame {

      JButton jb = new JButton();

      public NewJFrame() {
      initComponents();

      jTable.getColumn(" ").setCellRenderer(new TableCellRenderer() {
      @Override
      public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
      jb.setText("Delete");
      return jb;
      }
      });

      jTable.getColumn(" ").setCellEditor(new TableCellEditor() {
      @Override
      public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
      if (isSelected) {
      jb.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
      jTable = (JTable) e.getSource();
      int modelRow = Integer.valueOf(e.getActionCommand());
      ((DefaultTableModel) jTable.getModel()).removeRow(modelRow);
      }
      });
      }
      return jb;
      }









      share|improve this question
















      I want to add jButton inside column and then delete row using added jButton I've tried some stackoverflow questions and have following code but that doesn't deleting a row.



      public class NewJFrame extends javax.swing.JFrame {

      JButton jb = new JButton();

      public NewJFrame() {
      initComponents();

      jTable.getColumn(" ").setCellRenderer(new TableCellRenderer() {
      @Override
      public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
      jb.setText("Delete");
      return jb;
      }
      });

      jTable.getColumn(" ").setCellEditor(new TableCellEditor() {
      @Override
      public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) {
      if (isSelected) {
      jb.addActionListener(new ActionListener() {
      @Override
      public void actionPerformed(ActionEvent e) {
      jTable = (JTable) e.getSource();
      int modelRow = Integer.valueOf(e.getActionCommand());
      ((DefaultTableModel) jTable.getModel()).removeRow(modelRow);
      }
      });
      }
      return jb;
      }






      java jtable jbutton






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jan 19 at 3:04









      TT.

      12.3k63362




      12.3k63362










      asked Jan 18 at 18:50









      Swapnil NagtilakSwapnil Nagtilak

      398110




      398110
























          1 Answer
          1






          active

          oldest

          votes


















          1














          We can do it like in below sample program. We can write a custom renderer + editor which simply returns a JButton as the renderer/editor component. Notice that row index is stored in a field in the editor.



          import javax.swing.*;
          import javax.swing.event.CellEditorListener;
          import javax.swing.table.*;
          import java.awt.Component;
          import java.awt.event.*;
          import java.util.EventObject;

          public class ButtonInTable {

          public static void main(String args) {

          DefaultTableModel tableModel = new DefaultTableModel(
          new Object {
          {"aa", "aaa", ""},
          {"bb", "bbb", ""},
          {"cc", "ccc", ""},
          {"dd", "ddd", ""},
          {"ee", "eee", ""}},
          new Object {"Column 1", "Column 2", " "});
          JTable table = new JTable(tableModel);
          table.getColumn(" ").setCellRenderer(new RendererAndEditor(table));
          table.getColumn(" ").setCellEditor(new RendererAndEditor(table));

          JFrame f = new JFrame();
          f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          f.getContentPane().add(new JScrollPane(table));
          f.setBounds(300, 200, 400, 300);
          f.setVisible(true);
          }
          }

          class RendererAndEditor implements TableCellRenderer, TableCellEditor {

          private JButton button;
          private int row;

          RendererAndEditor(JTable table) {
          button = new JButton("Delete");
          button.addActionListener(new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent e) {
          DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
          tableModel.removeRow(row);
          }
          });
          }

          @Override
          public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
          boolean hasFocus, int row, int column) {
          return button;
          }

          @Override
          public java.awt.Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row,
          int column) {
          this.row = row;
          return button;
          }

          @Override
          public Object getCellEditorValue() {
          return null;
          }

          @Override
          public boolean isCellEditable(EventObject anEvent) {
          return true;
          }

          @Override
          public boolean shouldSelectCell(EventObject anEvent) {
          return true;
          }

          @Override
          public boolean stopCellEditing() {
          return true;
          }

          @Override
          public void cancelCellEditing() { }

          @Override
          public void addCellEditorListener(CellEditorListener l) { }

          @Override
          public void removeCellEditorListener(CellEditorListener l) { }
          }





          share|improve this answer























            Your Answer






            StackExchange.ifUsing("editor", function () {
            StackExchange.using("externalEditor", function () {
            StackExchange.using("snippets", function () {
            StackExchange.snippets.init();
            });
            });
            }, "code-snippets");

            StackExchange.ready(function() {
            var channelOptions = {
            tags: "".split(" "),
            id: "1"
            };
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function() {
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled) {
            StackExchange.using("snippets", function() {
            createEditor();
            });
            }
            else {
            createEditor();
            }
            });

            function createEditor() {
            StackExchange.prepareEditor({
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader: {
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            },
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            });


            }
            });














            draft saved

            draft discarded


















            StackExchange.ready(
            function () {
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54259863%2fdelete-jtable-row-with-jbutton-using-celleditor%23new-answer', 'question_page');
            }
            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            1














            We can do it like in below sample program. We can write a custom renderer + editor which simply returns a JButton as the renderer/editor component. Notice that row index is stored in a field in the editor.



            import javax.swing.*;
            import javax.swing.event.CellEditorListener;
            import javax.swing.table.*;
            import java.awt.Component;
            import java.awt.event.*;
            import java.util.EventObject;

            public class ButtonInTable {

            public static void main(String args) {

            DefaultTableModel tableModel = new DefaultTableModel(
            new Object {
            {"aa", "aaa", ""},
            {"bb", "bbb", ""},
            {"cc", "ccc", ""},
            {"dd", "ddd", ""},
            {"ee", "eee", ""}},
            new Object {"Column 1", "Column 2", " "});
            JTable table = new JTable(tableModel);
            table.getColumn(" ").setCellRenderer(new RendererAndEditor(table));
            table.getColumn(" ").setCellEditor(new RendererAndEditor(table));

            JFrame f = new JFrame();
            f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            f.getContentPane().add(new JScrollPane(table));
            f.setBounds(300, 200, 400, 300);
            f.setVisible(true);
            }
            }

            class RendererAndEditor implements TableCellRenderer, TableCellEditor {

            private JButton button;
            private int row;

            RendererAndEditor(JTable table) {
            button = new JButton("Delete");
            button.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
            DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
            tableModel.removeRow(row);
            }
            });
            }

            @Override
            public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
            boolean hasFocus, int row, int column) {
            return button;
            }

            @Override
            public java.awt.Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row,
            int column) {
            this.row = row;
            return button;
            }

            @Override
            public Object getCellEditorValue() {
            return null;
            }

            @Override
            public boolean isCellEditable(EventObject anEvent) {
            return true;
            }

            @Override
            public boolean shouldSelectCell(EventObject anEvent) {
            return true;
            }

            @Override
            public boolean stopCellEditing() {
            return true;
            }

            @Override
            public void cancelCellEditing() { }

            @Override
            public void addCellEditorListener(CellEditorListener l) { }

            @Override
            public void removeCellEditorListener(CellEditorListener l) { }
            }





            share|improve this answer




























              1














              We can do it like in below sample program. We can write a custom renderer + editor which simply returns a JButton as the renderer/editor component. Notice that row index is stored in a field in the editor.



              import javax.swing.*;
              import javax.swing.event.CellEditorListener;
              import javax.swing.table.*;
              import java.awt.Component;
              import java.awt.event.*;
              import java.util.EventObject;

              public class ButtonInTable {

              public static void main(String args) {

              DefaultTableModel tableModel = new DefaultTableModel(
              new Object {
              {"aa", "aaa", ""},
              {"bb", "bbb", ""},
              {"cc", "ccc", ""},
              {"dd", "ddd", ""},
              {"ee", "eee", ""}},
              new Object {"Column 1", "Column 2", " "});
              JTable table = new JTable(tableModel);
              table.getColumn(" ").setCellRenderer(new RendererAndEditor(table));
              table.getColumn(" ").setCellEditor(new RendererAndEditor(table));

              JFrame f = new JFrame();
              f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              f.getContentPane().add(new JScrollPane(table));
              f.setBounds(300, 200, 400, 300);
              f.setVisible(true);
              }
              }

              class RendererAndEditor implements TableCellRenderer, TableCellEditor {

              private JButton button;
              private int row;

              RendererAndEditor(JTable table) {
              button = new JButton("Delete");
              button.addActionListener(new ActionListener() {
              @Override
              public void actionPerformed(ActionEvent e) {
              DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
              tableModel.removeRow(row);
              }
              });
              }

              @Override
              public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
              boolean hasFocus, int row, int column) {
              return button;
              }

              @Override
              public java.awt.Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row,
              int column) {
              this.row = row;
              return button;
              }

              @Override
              public Object getCellEditorValue() {
              return null;
              }

              @Override
              public boolean isCellEditable(EventObject anEvent) {
              return true;
              }

              @Override
              public boolean shouldSelectCell(EventObject anEvent) {
              return true;
              }

              @Override
              public boolean stopCellEditing() {
              return true;
              }

              @Override
              public void cancelCellEditing() { }

              @Override
              public void addCellEditorListener(CellEditorListener l) { }

              @Override
              public void removeCellEditorListener(CellEditorListener l) { }
              }





              share|improve this answer


























                1












                1








                1







                We can do it like in below sample program. We can write a custom renderer + editor which simply returns a JButton as the renderer/editor component. Notice that row index is stored in a field in the editor.



                import javax.swing.*;
                import javax.swing.event.CellEditorListener;
                import javax.swing.table.*;
                import java.awt.Component;
                import java.awt.event.*;
                import java.util.EventObject;

                public class ButtonInTable {

                public static void main(String args) {

                DefaultTableModel tableModel = new DefaultTableModel(
                new Object {
                {"aa", "aaa", ""},
                {"bb", "bbb", ""},
                {"cc", "ccc", ""},
                {"dd", "ddd", ""},
                {"ee", "eee", ""}},
                new Object {"Column 1", "Column 2", " "});
                JTable table = new JTable(tableModel);
                table.getColumn(" ").setCellRenderer(new RendererAndEditor(table));
                table.getColumn(" ").setCellEditor(new RendererAndEditor(table));

                JFrame f = new JFrame();
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.getContentPane().add(new JScrollPane(table));
                f.setBounds(300, 200, 400, 300);
                f.setVisible(true);
                }
                }

                class RendererAndEditor implements TableCellRenderer, TableCellEditor {

                private JButton button;
                private int row;

                RendererAndEditor(JTable table) {
                button = new JButton("Delete");
                button.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
                tableModel.removeRow(row);
                }
                });
                }

                @Override
                public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
                boolean hasFocus, int row, int column) {
                return button;
                }

                @Override
                public java.awt.Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row,
                int column) {
                this.row = row;
                return button;
                }

                @Override
                public Object getCellEditorValue() {
                return null;
                }

                @Override
                public boolean isCellEditable(EventObject anEvent) {
                return true;
                }

                @Override
                public boolean shouldSelectCell(EventObject anEvent) {
                return true;
                }

                @Override
                public boolean stopCellEditing() {
                return true;
                }

                @Override
                public void cancelCellEditing() { }

                @Override
                public void addCellEditorListener(CellEditorListener l) { }

                @Override
                public void removeCellEditorListener(CellEditorListener l) { }
                }





                share|improve this answer













                We can do it like in below sample program. We can write a custom renderer + editor which simply returns a JButton as the renderer/editor component. Notice that row index is stored in a field in the editor.



                import javax.swing.*;
                import javax.swing.event.CellEditorListener;
                import javax.swing.table.*;
                import java.awt.Component;
                import java.awt.event.*;
                import java.util.EventObject;

                public class ButtonInTable {

                public static void main(String args) {

                DefaultTableModel tableModel = new DefaultTableModel(
                new Object {
                {"aa", "aaa", ""},
                {"bb", "bbb", ""},
                {"cc", "ccc", ""},
                {"dd", "ddd", ""},
                {"ee", "eee", ""}},
                new Object {"Column 1", "Column 2", " "});
                JTable table = new JTable(tableModel);
                table.getColumn(" ").setCellRenderer(new RendererAndEditor(table));
                table.getColumn(" ").setCellEditor(new RendererAndEditor(table));

                JFrame f = new JFrame();
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.getContentPane().add(new JScrollPane(table));
                f.setBounds(300, 200, 400, 300);
                f.setVisible(true);
                }
                }

                class RendererAndEditor implements TableCellRenderer, TableCellEditor {

                private JButton button;
                private int row;

                RendererAndEditor(JTable table) {
                button = new JButton("Delete");
                button.addActionListener(new ActionListener() {
                @Override
                public void actionPerformed(ActionEvent e) {
                DefaultTableModel tableModel = (DefaultTableModel) table.getModel();
                tableModel.removeRow(row);
                }
                });
                }

                @Override
                public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
                boolean hasFocus, int row, int column) {
                return button;
                }

                @Override
                public java.awt.Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row,
                int column) {
                this.row = row;
                return button;
                }

                @Override
                public Object getCellEditorValue() {
                return null;
                }

                @Override
                public boolean isCellEditable(EventObject anEvent) {
                return true;
                }

                @Override
                public boolean shouldSelectCell(EventObject anEvent) {
                return true;
                }

                @Override
                public boolean stopCellEditing() {
                return true;
                }

                @Override
                public void cancelCellEditing() { }

                @Override
                public void addCellEditorListener(CellEditorListener l) { }

                @Override
                public void removeCellEditorListener(CellEditorListener l) { }
                }






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Jan 19 at 1:02









                Prasad KarunagodaPrasad Karunagoda

                984169




                984169






























                    draft saved

                    draft discarded




















































                    Thanks for contributing an answer to Stack Overflow!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid



                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.


                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function () {
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54259863%2fdelete-jtable-row-with-jbutton-using-celleditor%23new-answer', 'question_page');
                    }
                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Callistus III

                    Plistias Cous

                    Index Sanctorum