Hallo,
ich habe mal wieder ein Problem!
Habe eine JTable die ich wie gewünscht mit einem Button komplet löschen kann und es funktioniert auch!
Ich möchte aber noch zusätzlic, wenn der Benutzer in einer Zeile "Name" clickt, es auch mit der Entfernung-Taste des keyboards, die komplete Zeile löschen kann. Sodass nur die gewünschte Zeile gelöscht wird und alle anderen übrig bleiben.
Bekomme es aber nicht hin! Kann mir vllt. jemand helfen?
Meine Tabelle sieht wie folgt aus:
ich habe mal wieder ein Problem!
Habe eine JTable die ich wie gewünscht mit einem Button komplet löschen kann und es funktioniert auch!
Ich möchte aber noch zusätzlic, wenn der Benutzer in einer Zeile "Name" clickt, es auch mit der Entfernung-Taste des keyboards, die komplete Zeile löschen kann. Sodass nur die gewünschte Zeile gelöscht wird und alle anderen übrig bleiben.
Bekomme es aber nicht hin! Kann mir vllt. jemand helfen?
Meine Tabelle sieht wie folgt aus:
Java:
import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.JScrollPane;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class Namensfenster extends JFrame {
private JPanel contentPane;
private JTable table;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Namensfenster frame = new Namensfenster();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Namensfenster() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 490, 300);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);
JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(10, 11, 243, 240);
contentPane.add(scrollPane);
table = new JTable();
scrollPane.setViewportView(table);
table.setModel(new DefaultTableModel(
new Object[][] {
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
{null, null},
},
new String[] {
"Name", "Gewicht"
}
));
JButton btnNewButton = new JButton("Tabelleninhalte l\u00F6schen");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
/*
* Dies zeigt das Dialogfenster an. Wenn der Benutzer sich
* sicher ist, werden die Einträge in der Tabelle gelöscht Wenn
* der Benutzer sich nicht sicher ist, schließt sich das
* Dialogfenster und der Benutzer sieht das unveränderte
* Namensfenster.
*/
JFrame frameDelete = new JFrame();
Object[] options = { "Ja",
"Nein" };
int condition = JOptionPane.showOptionDialog(frameDelete,
"Alle Einträge löschen?", "",
JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE,
null, // Benutzt keinen
// definierten Icon
options, // Der Titel von dem Button
options[0]); // Voreinstellung für den Button-Titel
/*
* Dies löscht die Eintraege in der Tabelle
*/
if (condition == JOptionPane.YES_OPTION) {
if (table.isEditing()) {
table.getCellEditor().stopCellEditing();
}
int row = table.getRowCount();
int column = table.getColumnCount();
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
if(table.getValueAt(i,0) != null) {
((DefaultTableModel) table.getModel()).setValueAt(
null, i, j);
}
}
}
}
}
});
btnNewButton.setBounds(263, 228, 201, 23);
contentPane.add(btnNewButton);
}
}