Перерисовка таблици - 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();