Мне нужно удалить строку из JTable.Удалить строку из JTable
Вот мой код:
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import java.awt.GridLayout;
import javax.swing.JPanel;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import java.util.ArrayList;
import javax.swing.table.DefaultTableModel;
public class GuiManyComponents implements ItemListener, ActionListener {
public static void main(String[] args) {
new GuiManyComponents();
}
JTextField txtField1;
JTextArea tarMultipleLines;
JButton btnDelete;
JButton btnAdd;
JButton btnEdit;
JButton ok;
JButton cancel;
JTable table = new JTable();
JTextField title;
JTextField description;
JTextField genre;
JTextField director;
JTextField rating;
ArrayList<Movie> movies = new ArrayList<Movie>();
public GuiManyComponents()
{
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.setSize(500,700);
frame.setTitle("Text area test");
final JFrame frame1 = new JFrame();
frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame1.setLayout(new BorderLayout());
frame1.setTitle("Text area test");
final JFrame frame2 = new JFrame();
frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame2.setLayout(new BorderLayout());
frame2.setTitle("Text area test");
table.getSelectedRow();
//test data
movies.add(new Movie("1ABC", "D", "1", "qq", ""));
movies.add(new Movie("2ABC", "F", "2", "", ""));
movies.add(new Movie("3ABC", "G", "3", "", ""));
updateJTable();
JPanel south = new JPanel(new GridLayout(1, 3));
south.add(btnDelete = new JButton("Delete", new ImageIcon("images\\nocheck.png")));
btnDelete.addActionListener(this);
south.add(btnEdit = new JButton("Change info", new ImageIcon("images\\paste.png")));
btnEdit.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent arg0)
{
frame.setVisible(false);
frame2.setVisible(true);
}
});
south.add(btnAdd = new JButton("Add New", new ImageIcon("images\\add.png")));
btnAdd.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent arg0)
{
frame.setVisible(false);
frame1.setVisible(true);
}
});
JScrollPane scrollPane = new JScrollPane(table); //add scrollpane to table
frame.add(scrollPane, BorderLayout.CENTER);
frame.add(south, BorderLayout.SOUTH);
JPanel down = new JPanel(new GridLayout(1, 2));
down.add(cancel = new JButton("Cancel", new ImageIcon("images\\nocheck.png")));
cancel.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent arg0)
{
frame.setVisible(true);
frame1.setVisible(false);
}
});
down.add(ok = new JButton("Save", new ImageIcon("images\\checkmark.png")));
ok.setPreferredSize(new Dimension(100, 70));
ok.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg3)
{
String input = title.getText();
String input2 = genre.getText();
String input3 = description.getText();
String input4 = director.getText();
String input5 = rating.getText();
movies.add(new Movie(input, input2, input3, input4, input5));
frame.setVisible(true);
frame1.setVisible(false);
updateJTable();
}});
title = new JTextField(5);
description = new JTextField(5);
director = new JTextField(5);
rating = new JTextField(5);
genre = new JTextField(5);
title.addActionListener(this); // add actionListener
description.addActionListener(this);
rating.addActionListener(this);
genre.addActionListener(this);
director.addActionListener(this);
JPanel north = new JPanel(new GridLayout(5, 2));
north.add(new JLabel("Title: "));
north.add(title);
north.add(new JLabel("Director: "));
north.add(director);
north.add(new JLabel("Description: "));
north.add(description);
north.add(new JLabel("Genre: "));
north.add(genre);
north.add(new JLabel("Rating: "));
north.add(rating);
frame1.add(down, BorderLayout.SOUTH);
frame1.add(north, BorderLayout.NORTH);
frame1.pack();
JPanel apacia = new JPanel(new GridLayout(1, 2));
apacia.add(cancel = new JButton("Cancel", new ImageIcon("images\\nocheck.png")));
cancel.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent arg0)
{
frame.setVisible(true);
frame2.setVisible(false);
}
});
apacia.add(ok = new JButton("Done", new ImageIcon("images\\checkmark.png")));
JPanel virsus = new JPanel(new GridLayout(5, 2));
virsus.add(new JLabel("Title: "));
virsus.add(title);
virsus.add(new JLabel("Director: "));
virsus.add(director);
virsus.add(new JLabel("Description: "));
virsus.add(description);
virsus.add(new JLabel("Genre: "));
virsus.add(rating);
virsus.add(new JLabel("Rating: "));
virsus.add(genre);
frame2.add(virsus, BorderLayout.NORTH);
frame2.add(apacia, BorderLayout.SOUTH);
frame2.pack();
frame.setVisible(true);
frame1.setVisible(false);
frame2.setVisible(false);
}
public void updateJTable()
{
DefaultTableModel model = new DefaultTableModel();
model.setColumnIdentifiers(new String[] { "title", "genre", "description", "director", "rating" });
model.setRowCount(movies.size());
int row = 0;
for (Movie movie : movies) {
model.setValueAt(movie.getTitle(), row, 0);
model.setValueAt(movie.getGenre(), row, 1);
model.setValueAt(movie.getDescription(), row, 2);
model.setValueAt(movie.getDirector(), row, 3);
model.setValueAt(movie.getRating(), row, 4);
row++;
}
table.setModel(model);
}
public void actionPerformed(ActionEvent arg0)
{
}
public void itemStateChanged(ItemEvent event)
{
}
}
Я только сейчас начинаю делать GUI, и это Лил немного трудно.
Если бы вы могли помочь, я буду очень точен.
Имена переменных не должны начинаться с символа верхнего регистра. – camickr
это показатель только –
Итак, вы должны продвигать надлежащие стандарты Java. Ярлык синтаксиса форума обрабатывает ваше имя переменной как имя класса, потому что вы не следуете стандартам. При отправке кода не требуется больше времени, чтобы использовать стандарты. – camickr