Перерисовка таблици - Java

Узнай цену своей работы

Формулировка задачи:

Добрый день. Есть фрейм на нем панель на ней таблица, при клике по kvartiri1.addActionListener происходит добавление данных в таблицу она не не отображается пока не потянешь за край окна программы.
package test;
 
import javax.swing.*;
import javax.swing.JFrame;
import javax.swing.plaf.basic.BasicOptionPaneUI;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
/**
 * Created by User on 14.09.2016.
 */
public class Swing {
    public static void main(String[] args) {
        final JFrame frame = new JFrame("test");
        frame.setSize(1000, 600);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLocationRelativeTo(null);
        frame.setLayout(new GridBagLayout());
        //Верхнее меню

        JPanel panelTable = new JPanel(new BorderLayout());
 
        //JTable
        final BookTableModel btm = new BookTableModel();
        JTable bookTable = new JTable(btm);
        JScrollPane bookScroll = new JScrollPane(bookTable);//Прокрутка

        panelTable.add(bookScroll);
        panelTable.setBackground(Color.white);
 
        frame.add(panelTable,new GridBagConstraints(0,0,6,6,0.9,0.9,GridBagConstraints.NORTH,
                GridBagConstraints.BOTH,new Insets(0,0,0,0),0,0));

        Menu menu = new Menu(frame,panelTable,btm);
 
        frame.setVisible(true);
 
    }
}
package test;
 
import javax.swing.table.AbstractTableModel;
import java.util.ArrayList;
 
/**
 * Created by User on 14.09.2016.
 */
public class BookTableModel extends AbstractTableModel{
 
    private int columCount = 3;
    private ArrayList<String []> dataArrayList;
 
    BookTableModel(){//Инициализация
        dataArrayList = new ArrayList<String []>();
        for(int i = 0; i < dataArrayList.size();i++){
            dataArrayList.add(new String[getColumnCount()]);
        }
    }

    public int getRowCount() {//возвращает Количество строк табл
        return dataArrayList.size();
    }
 
    public int getColumnCount() {//возвращает Количество колонок табл
        return columCount;
    }
 
    public Object getValueAt(int rowIndex, int columnIndex) {//Возвращает значение по номеру строки столбца
        String []rows = dataArrayList.get(rowIndex);
        return  rows[columnIndex];
    }
 
    public String getColumnName(int columnIndex){
        String res = "";
        switch (columnIndex){
            case 0:res = "Тедефон";break;
            case 1:res = "Адрес";break;
            case 2:res = "Имя";break;
        }
        return res;
    }
 
    public void addDate(String []row){//Добавляет одну строку
        System.out.println(getColumnCount());
        String []rowTable = new String[getColumnCount()];
        rowTable = row;
        dataArrayList.add(rowTable);
 
    }
 
    public void addDate(){//Вытаскуем из БД данные заносим в массив и отправляем на добовление
        String []data = {
            "123",
            "123",
            "123"
        };
        for(int i = 0;i < 10;i++){
            addDate(data);
        }
    }

}
package test;
 
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
 
/**
 * Created by User on 14.09.2016.
 */
public class Menu {
 
    Menu(final JFrame frame, final JPanel panelTable, final BookTableModel btm){
        JMenuBar menuBar = new JMenuBar();
        JMenu kvartiriMain = new JMenu("kvartiri");
 
        JMenuItem kvartiri1 = new JMenuItem("Аренда: предложение");
        JMenuItem kvartiri2 = new JMenuItem("Продажа недвижимости");
 
        kvartiriMain.add(kvartiri1);
        kvartiriMain.add(kvartiri2);
 
        menuBar.add(kvartiriMain);
 
        kvartiri1.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                //Конект базы данных передаёться
                btm.addDate();
                panelTable.validate();
                frame.validate();
            }
        });
        kvartiri2.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                System.out.println("k 2");
            }
        });
 
        frame.setJMenuBar(menuBar);//Добавление меню в верхнюю панель
    }
}

Решение задачи: «Перерисовка таблици»

textual
Листинг программы
repaint();

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.3 из 5