Чтение данных из JTable - PullRequest
       9

Чтение данных из JTable

0 голосов
/ 27 апреля 2019

Мне нужно получить BookID из таблицы BookInfo.Когда я нажимаю на кнопку «ДОБАВИТЬ», должно появиться окно «Резервирование», в котором в таблице указаны «BookID», «Дата выпуска» и «Дата возврата».Поэтому мне нужно передать BookID как объект в резервирование.

Я попытался создать новый экземпляр информации о книге или передать строку в резервирование ...

//for BookInfo:
public void addRow(Object[] objToAdd)
    {
        DefaultTableModel model = (DefaultTableModel) table.getModel();
        model.addRow(objToAdd);
    }
...

        JButton btnAdd = new JButton("Add");
        btnAdd.setBorder(new BevelBorder(BevelBorder.RAISED, null, null, new Color(0, 0, 0), new Color(0, 0, 0)));
        btnAdd.setOpaque(true);
        btnAdd.setFont(new Font("American Typewriter", Font.PLAIN, 18));
        btnAdd.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                Reservation.reserve(/*Object bookID*/);
            }
        });
String[] columnNames = {" Book ID", " Title ", " Author", " Genre", " Date Published ", " Availability"}; // table layout

//for Reservation:
public void reserve(Object[] bookID)
    {
        String issuedDate = new SimpleDateFormat("yyyy.MM.dd").format(new Date());

        Calendar c = Calendar.getInstance();
        c.setTime(new Date()); 
        c.add(Calendar.DATE, 30); 
        String returnDate = new SimpleDateFormat("yyyy.MM.dd").format(c);


        String[]resInfo = {"Book ID" , issuedDate, returnDate};
        DefaultTableModel model = (DefaultTableModel) table.getModel();
        model.addRow(resInfo);
    }

Ответы [ 2 ]

0 голосов
/ 27 апреля 2019

Вы можете использовать приведенный ниже код для чтения всех jtable данных

     DefaultTableModel model =  (DefaultTableModel) jTable1.getModel();
     Vector data = model.getDataVector();

     for (Object data1 : data) {
         System.out.println(data1);
    }
0 голосов
/ 27 апреля 2019

Я не уверен, что понимаю, как выглядит ваш пользовательский интерфейс, какое поведение вы хотите или что вы реализовали в настоящее время. Пожалуйста, постарайтесь быть более четкими в своих описаниях и укажите весь соответствующий код при задании вопроса; он не может быть получен из кода, когда и где создаются кнопки JButton, и какую информацию вы имеете в этой области, что является одной из наиболее важных сведений, необходимых для ответа на ваш вопрос.

Предполагая, что вы визуализируете таблицу путем итерации по модели таблицы и создаете кнопку для каждой строки, тогда у вас уже есть BookID в области действия actionListener в качестве значения одного из столбцов. Вам просто нужно добавить его в свой код слушателя.

Аналогичный альтернативный подход предполагает использование кнопки actionCommand для связывания данных String с кнопкой. Затем вы можете получить эту информацию из ActionEvent, с которым вызывается метод actionPerformed. Вот один пример . Но я не вижу смысла использовать этот подход здесь. Это просто добавляет сложности, решение выше является более простым и естественным.

Если я ошибаюсь в своем предположении о том, как создать таблицу, вы можете присоединить mouseListener вместо actionListener, например здесь , чтобы вы могли получить строку из события и получить доступ к соответствующему столбцу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...