Перерисовка таблици - 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();
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д