Заморочка слушателя мыши - Java
Формулировка задачи:
import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; public class BookSearchWindow extends JFrame implements MouseListener, ActionListener{ BooksData booksData = new BooksData(); InformDataAll dataAll = new InformDataAll(); private JPanel searchWindowPanel = new JPanel(); private JPanel selectSearchPanel = new JPanel(); private JPanel bookTablePanel = new JPanel(); private JLabel bookSearchLabel = new JLabel("Search by book title"); private JTextField bookSearchField = new JTextField(); private JLabel autorSearchLabel = new JLabel("Search by autor"); private JTextField autorSearchField = new JTextField(); private JLabel janreSearchLabel = new JLabel("Search by autor"); private JTextField janreSearchField = new JTextField(); private JButton searchButton = new JButton("Search"); private String bookArray[][]; private String tableTittle[] = { "Book title", "Janre", "Autor", "Publisher" }; private int row; private int column; private JTable bookTable; private JScrollPane scrollPane; private JOptionPane DataShowPane; public BookSearchWindow() { fillBookArray(); fillBookTable(); setSize(600, 800); setLayout(new FlowLayout()); setLocationRelativeTo(null); searchWindowPanel.setPreferredSize(new Dimension(600, 800)); searchWindowPanel.setLayout(new FlowLayout()); selectSearchPanel.setPreferredSize(new Dimension(600, 300)); selectSearchPanel.setLayout(null); bookSearchLabel.setBounds(225, 30, 150, 20); bookSearchLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK)); bookSearchLabel.setForeground(Color.BLACK); bookSearchLabel.setHorizontalAlignment((int) CENTER_ALIGNMENT); bookSearchField.setBounds(200, 55, 200, 30); bookSearchField.setBorder(BorderFactory.createLineBorder(Color.BLACK)); autorSearchLabel.setBounds(250, 95, 100, 20); autorSearchLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK)); autorSearchLabel.setForeground(Color.BLACK); autorSearchLabel.setHorizontalAlignment((int) CENTER_ALIGNMENT); autorSearchField.setBounds(200, 125, 200, 30); autorSearchField.setBorder(BorderFactory.createLineBorder(Color.BLACK)); janreSearchLabel.setBounds(250, 165, 100, 20); janreSearchLabel.setBorder(BorderFactory.createLineBorder(Color.BLACK)); janreSearchLabel.setForeground(Color.BLACK); janreSearchLabel.setHorizontalAlignment((int) CENTER_ALIGNMENT); janreSearchField.setBounds(200, 195, 200, 30); janreSearchField.setBorder(BorderFactory.createLineBorder(Color.BLACK)); searchButton.setBounds(250, 250, 100, 30); searchButton.setBorder(BorderFactory.createLineBorder(Color.BLACK)); bookTablePanel.setPreferredSize(new Dimension(600, 500)); bookTablePanel.setLayout(new FlowLayout()); scrollPane = new JScrollPane(bookTable); scrollPane.setPreferredSize(new Dimension(570, 500)); bookTable.addMouseListener(this); searchButton.addActionListener(this); selectSearchPanel.add(bookSearchLabel); selectSearchPanel.add(bookSearchField); selectSearchPanel.add(autorSearchLabel); selectSearchPanel.add(autorSearchField); selectSearchPanel.add(janreSearchLabel); selectSearchPanel.add(janreSearchField); selectSearchPanel.add(searchButton); bookTablePanel.add(scrollPane); searchWindowPanel.add(selectSearchPanel); searchWindowPanel.add(bookTablePanel); add(searchWindowPanel); setVisible(true); } public void fillBookArray() { booksData.fillBookList(); bookArray = new String[booksData.getBookList().size()][4]; for (int i = 0; i < bookArray.length; i++) { bookArray[i][0] = booksData.getBookList().get(i).getBookTitle(); bookArray[i][1] = booksData.getBookList().get(i).getJanre(); bookArray[i][2] = booksData.getBookList().get(i).getAutorName() + " " + booksData.getBookList().get(i).getAutorSurname(); bookArray[i][3] = booksData.getBookList().get(i).getPublisherName(); } } public void fillBookTable() { bookTable = new javax.swing.JTable(bookArray, tableTittle) { @Override public boolean isCellEditable(int arg0, int arg1) { return false; } @Override public boolean getCellSelectionEnabled() { return true; } }; } public void fillBookArrayAndTableBySearch () { for (int i = 0; i < bookArray.length; i++) { for (int j = 0; j < bookArray[i].length; j++) { bookArray[i][j] = null; } } if ((!bookSearchField.getText().equalsIgnoreCase("") && !autorSearchField.getText().equalsIgnoreCase("")) || (!bookSearchField.getText().equalsIgnoreCase("") && !janreSearchField.getText().equalsIgnoreCase("")) || (!janreSearchField.getText().equalsIgnoreCase("") && !autorSearchField.getText().equalsIgnoreCase(""))) { for (int i = 0; i < booksData.getBookList().size(); i++) { if ((booksData.getBookList().get(i).getBookTitle().contains(bookSearchField.getText())) && booksData.getBookList().get(i).getAutorName().contains(autorSearchField.getText())) { for (int j = 0; j < bookArray.length; ) { bookArray[j][0] = booksData.getBookList().get(i).getBookTitle(); bookArray[j][1] = booksData.getBookList().get(i).getJanre(); bookArray[j][2] = booksData.getBookList().get(i).getAutorName() + " " + booksData.getBookList().get(i).getAutorSurname(); bookArray[j][3] = booksData.getBookList().get(i).getPublisherName(); j++; break; } } } } fillBookTable(); } public void selectAndshowData() { row = bookTable.getSelectedRow(); column = bookTable.getSelectedColumn(); if (column == 0) { for (int i = 0; i < dataAll.getBooksList().size(); i++) { if (bookArray[row][0].equals(dataAll.getBooksList().get(i).getBookTitle())) { DataShowPane = new JOptionPane(dataAll.getBooksList().get(i)); JDialog dialogPane = DataShowPane.createDialog((JFrame) null, "Book Data"); dialogPane.setLocationRelativeTo(searchWindowPanel); dialogPane.setVisible(true); } } } else if (column == 2) { String autorDataSplit[] = new String[2]; autorDataSplit = bookArray[row][column].split(" "); for (int i = 0; i < dataAll.getAutorsList().size(); i++) { if (autorDataSplit[0].equals(dataAll.getAutorsList().get(i).getAutorName()) && autorDataSplit[1].equals(dataAll.getAutorsList().get(i).getAutorSurname())) { DataShowPane = new JOptionPane(dataAll.getAutorsList().get(i)); JDialog dialogPane = DataShowPane.createDialog((JFrame) null, "Autor Data"); dialogPane.setLocationRelativeTo(searchWindowPanel); dialogPane.setVisible(true); } } } else if (column == 3) { for (int i = 0; i < dataAll.getPublishersList().size(); i++) { if (bookArray[row][3].equals(dataAll.getPublishersList().get(i).getPublisherName())) { DataShowPane = new JOptionPane(dataAll.getPublishersList().get(i)); JDialog dialogPane = DataShowPane.createDialog((JFrame) null, "Publisher Data"); dialogPane.setLocationRelativeTo(searchWindowPanel); dialogPane.setVisible(true); } } } } @Override public void mouseClicked(MouseEvent e) { if (e.getSource() == bookTable) { System.out.println("l"); selectAndshowData(); } } @Override public void mousePressed(MouseEvent e) { } @Override public void mouseReleased(MouseEvent e) { } @Override public void mouseEntered(MouseEvent e) { } @Override public void mouseExited(MouseEvent e) { } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == searchButton) { fillBookArrayAndTableBySearch(); searchWindowPanel.repaint(); validate(); } } }
Решение задачи: «Заморочка слушателя мыши»
textual
Листинг программы
import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; public class Test extends JFrame implements ActionListener{ JButton button = new JButton("1"); JPanel panel = new JPanel(); public Test() { setSize(500, 500); setLayout(new FlowLayout()); setLocationRelativeTo(null); panel.setPreferredSize(new Dimension(500, 500)); button.addActionListener(this); panel.add(button); add(panel); setVisible(true); } @Override public void actionPerformed(ActionEvent e) { if (e.getSource() == button){ panel.remove(button); button = new JButton("2"); panel.add(button); validate(); System.out.println("1, 2"); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д