Archief - [PROG][JAVA] jTable updaten

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

snoob

Legacy Member
Ik ben bezig aan een frame met daarin een jTable en rechts ervan een pane met wat invoerschermpjes & paar knoppen. Bedoeling is om de data van men invoer op te slaan in een klasse, deze in een hashmap te steken met als key een invoernummer ( ook in te voeren op dat panel ) en om dan de jTable aan de linkerkant te updaten met 3 variabelen per nieuw object.
Ik heb een functie gemaakt in men domeinklasse waar ik de hashmap in beheer dat een 2 dim tabel van Object teruggeeft met de nodige waarden maar ik weet niet hoe ik na het duwen op de knop die data in die jTable krijg.

Hier is de code:

frmBeheerGlossarium.java :
Code:
package gui;
import java.awt.*;
import javax.swing.*;
import domein.*;

public class frmBeheerGlossarium extends javax.swing.JFrame {

	{
		//Set Look & Feel
		try {
			javax.swing.UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
		} catch(Exception e) {
			e.printStackTrace();
		}
	}

	private JPanel IO_JPane;
	private JLabel lblBegripId;
	private JLabel lblNederlands;
	private JTable jTable1;
	private JPanel jPanel1;
	private JButton btnNegeer;
	private JButton btnBevestig;
	private JButton btnSchrap;
	private JButton btnNieuw;
	private JTextField txtVerklaringEN;
	private JTextField txtVerklaringFR;
	private JLabel lblEngels;
	private JTextField txtVerklaringNL;
	private JLabel lblVerklaringEN;
	private JLabel lblVerklaringFR;
	private JLabel lblVerklaringNL;
	private JTextField txtEngels;
	private JTextField txtFrans;
	private JTextField txtNederlands;
	private JLabel lblFrans;
	private JTextField txtBegripID;
	private Glossarium Begrippenlijst = new Glossarium();
	Object[] kolomKoppen = {"ID","Nederlands","Frans","Engels"};
	Object[][] data = {{"ID","Nederlands","Frans","Engels"}};
	
	/**
	* Auto-generated main method to display this JFrame
	*/
	public static void main(String[] args) {
		frmBeheerGlossarium inst = new frmBeheerGlossarium();
		inst.setVisible(true);
	}
	
	public frmBeheerGlossarium() {
		super();
		initGUI();
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			{
				IO_JPane = new JPanel();
				getContentPane().add(IO_JPane);
				IO_JPane.setLayout(null);
				IO_JPane.setBounds(280, 7, 399, 378);
				{
					lblBegripId = new JLabel();
					IO_JPane.add(lblBegripId);
					lblBegripId.setText("Begrip id");
					lblBegripId.setBounds(28, 28, 91, 28);
				}
				{
					txtBegripID = new JTextField();
					IO_JPane.add(txtBegripID);
					txtBegripID.setBounds(119, 28, 63, 28);
				}
				{
					lblNederlands = new JLabel();
					IO_JPane.add(lblNederlands);
					lblNederlands.setText("Nederlands");
					lblNederlands.setBounds(28, 63, 91, 28);
				}
				{
					lblEngels = new JLabel();
					IO_JPane.add(lblEngels);
					lblEngels.setText("Engels");
					lblEngels.setBounds(28, 119, 91, 28);
				}
				{
					lblFrans = new JLabel();
					IO_JPane.add(lblFrans);
					lblFrans.setText("Frans");
					lblFrans.setBounds(28, 91, 91, 28);
				}
				{
					txtNederlands = new JTextField();
					IO_JPane.add(txtNederlands);
					txtNederlands.setBounds(119, 63, 140, 28);
				}
				{
					txtFrans = new JTextField();
					IO_JPane.add(txtFrans);
					txtFrans.setBounds(119, 91, 140, 28);
				}
				{
					txtEngels = new JTextField();
					IO_JPane.add(txtEngels);
					txtEngels.setBounds(119, 119, 140, 28);
				}
				{
					lblVerklaringNL = new JLabel();
					IO_JPane.add(lblVerklaringNL);
					lblVerklaringNL.setText("Verklaring Nederlands");
					lblVerklaringNL.setBounds(28, 168, 189, 28);
				}
				{
					lblVerklaringFR = new JLabel();
					IO_JPane.add(lblVerklaringFR);
					lblVerklaringFR.setText("Verklaring Frans");
					lblVerklaringFR.setBounds(28, 215, 189, 28);
				}
				{
					lblVerklaringEN = new JLabel();
					IO_JPane.add(lblVerklaringEN);
					lblVerklaringEN.setText("Verklaring Engels");
					lblVerklaringEN.setBounds(28, 263, 189, 28);
				}
				{
					txtVerklaringNL = new JTextField();
					IO_JPane.add(txtVerklaringNL);
					txtVerklaringNL.setBounds(28, 191, 343, 28);
				}
				{
					txtVerklaringFR = new JTextField();
					IO_JPane.add(txtVerklaringFR);
					txtVerklaringFR.setBounds(28, 239, 343, 28);
				}
				{
					txtVerklaringEN = new JTextField();
					IO_JPane.add(txtVerklaringEN);
					txtVerklaringEN.setBounds(28, 289, 343, 28);
				}
				{
					btnNieuw = new JButton();
					IO_JPane.add(btnNieuw);
					btnNieuw.setText("nieuw");
					btnNieuw.setBounds(28, 336, 84, 28);
					btnNieuw.addActionListener(new ActionListener() {
						public void actionPerformed(ActionEvent evt) {
							Begrip temp = new Begrip(txtNederlands.getText(),txtFrans.getText(),txtEngels.getText(),
									txtVerklaringNL.getText(),txtVerklaringFR.getText(),txtVerklaringEN.getText());
							Begrippenlijst.Toevoegen(Integer.parseInt(txtBegripID.getText()),temp);
							data = Begrippenlijst.getDataInTabel();
							jTable1.repaint();
						}
					});
				}
				{
					btnSchrap = new JButton();
					IO_JPane.add(btnSchrap);
					btnSchrap.setText("schrap");
					btnSchrap.setBounds(114, 336, 84, 28);
				}
				{
					btnBevestig = new JButton();
					IO_JPane.add(btnBevestig);
					btnBevestig.setText("bevestig");
					btnBevestig.setBounds(200, 336, 84, 28);
					btnBevestig.addActionListener(new ActionListener() {
						public void actionPerformed(ActionEvent evt) {
							Begrippenlijst.Overzicht();
						}
					});
				}
				{
					btnNegeer = new JButton();
					IO_JPane.add(btnNegeer);
					btnNegeer.setText("negeer");
					btnNegeer.setBounds(287, 336, 84, 28);
				}
			}
			{
				jPanel1 = new JPanel();
				BorderLayout jPanel1Layout = new BorderLayout();
				getContentPane().add(jPanel1);
				jPanel1.setLayout(jPanel1Layout);
				jPanel1.setBounds(0, 0, 280, 378);
				{
					jTable1 = new JTable(data,kolomKoppen);
					jTable1.setShowGrid(true);
					jPanel1.add(jTable1, BorderLayout.CENTER);
					jTable1.setDragEnabled(true);
				}
			}
			pack();
			this.setSize(687, 412);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

Ik probeer dus de 2dim array data te herdefinieren na het invoeren van 1 object en dan de tabel te repainten maar dit werkt dus blijkbaar niet.

Hier zijn de domeinklassen:

Glossarium.java:
Code:
package domein;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;

import javax.swing.JOptionPane;

public class Glossarium implements GlossariumController{

	
	private Map<Integer, Begrip> begrippen = new HashMap<Integer, Begrip>();
	
	public Glossarium()
	{}
	
	public Glossarium(HashMap map)
	{
		//Constructor te gebruiken bij ophalen Begrippenlijst uit databank adhv Persistentieklasse
		//( nog te implementeren )
		begrippen=map;
	}
	
	public void Toevoegen(int id, Begrip b)
	{
		if(begrippen.containsKey(id))
		{
			JOptionPane.showMessageDialog(null,"Het gebruikte begrip id is al aanwezig in de databank, gelieve een andere key te gebruiken");
		}
		else
		{
			begrippen.put(id, b);
		}
	}

	public void Schrappen(int id)
	{
		if(begrippen.containsKey(id))
		begrippen.remove(id);
	}
	
	public void Schrappen(Begrip b)
	{
		if(begrippen.containsValue(b))
		begrippen.remove(b);
	}

	public void Wijzigen(int id,Begrip b)
	{
		begrippen.get(id).setBegripFR(b.getBegripFR());
		begrippen.get(id).setBegripEN(b.getBegripEN());
		begrippen.get(id).setBegripNL(b.getBegripNL());
		begrippen.get(id).setVerklaringFR(b.getVerklaringFR());
		begrippen.get(id).setVerklaringEN(b.getVerklaringEN());
		begrippen.get(id).setVerklaringNL(b.getVerklaringNL());
	}
	
	public void Overzicht()
	{	
		Set<Integer> sleutels = begrippen.keySet();
		for(Integer sleutel : sleutels)
		{
			System.out.println(String.format("Begrip-ID: %d", sleutel));
			System.out.println(String.format("Nederlands begrip: %s \nFrans begrip: %s\nEngels begrip: %s",begrippen.get(sleutel).getBegripNL(),begrippen.get(sleutel).getBegripFR(),begrippen.get(sleutel).getBegripEN()));
			System.out.println(String.format("Nederlandse verklaring: %s\nFranse verklaring: %s\nEngelse verklaring: %s\n",begrippen.get(sleutel).getVerklaringNL(),begrippen.get(sleutel).getVerklaringFR(),begrippen.get(sleutel).getVerklaringEN()));
		}
	}
	
	public Object[][] getDataInTabel()
	{
		int i = 0; 
		Set<Integer> sleutels = begrippen.keySet();
		for(Integer sleutel : sleutels)
		{	i++;}
		Object[][] data = new Object[i+1][4];
		int teller = 1;
		data[0][0] = "ID";
		data[0][1] = "Nederlands";
		data[0][2] = "Frans";
		data[0][3] = "Engels";
		for(Integer sleutel : sleutels)
		{
			
			data[teller][0] = new Integer(sleutel);
			data[teller][1] = begrippen.get(sleutel).getBegripNL();
			data[teller][2] = begrippen.get(sleutel).getBegripFR();
			data[teller][3] = begrippen.get(sleutel).getBegripEN();
			teller++;
		}
		return data;
	}
}

Begrip.java:
Code:
package domein;
public class Begrip {
	private String begripFR, begripEN, BegripNL, verklaringFR, verklaringEN, verklaringNL;
	
	public Begrip(String begripFR, String begripEN, String begripNL, String verklaringFR, String verklaringEN, String verklaringNL)
	{
		this.begripFR = begripFR;
		this.begripEN = begripEN;
		this.BegripNL = begripNL;
		this.verklaringFR = verklaringFR;
		this.verklaringEN = verklaringEN;
		this.verklaringNL = verklaringNL;}
	//getters
	protected String getBegripEN(){return begripEN;}
	protected String getBegripFR(){return begripFR;}
	protected String getBegripNL(){return BegripNL;}
	protected String getVerklaringEN(){return verklaringEN;}
	protected String getVerklaringFR(){return verklaringFR;}
	protected String getVerklaringNL(){return verklaringNL;}
	//setters
	protected void setBegripEN(String begripEN){this.begripEN = begripEN;}
	protected void setBegripFR(String begripFR){this.begripFR = begripFR;}
	protected void setBegripNL(String begripNL){BegripNL = begripNL;}	
	protected void setVerklaringEN(String verklaringEN){this.verklaringEN = verklaringEN;}
	protected void setVerklaringFR(String verklaringFR){this.verklaringFR = verklaringFR;}
	protected void setVerklaringNL(String verklaringNL){this.verklaringNL = verklaringNL;}
}

Kan iemand me helpen om deze data in men jTable (jTable1 hier ) te krijgen, of toelichten hoe ik het het beste zou oplossen?

Ollie

Legacy Member
Bekijk de JavaDoc van de TableModel interface (en zijn 2 implementaties AbstractTableModel en DefaultTableModel) eens. Op een JTable op de hoogte te brengen van changes in zijn model data moet je de fireTableDataChanged() method gebruiken.

snoob

Legacy Member
Ollie zei:
Bekijk de JavaDoc van de TableModel interface (en zijn 2 implementaties AbstractTableModel en DefaultTableModel) eens. Op een JTable op de hoogte te brengen van changes in zijn model data moet je de fireTableDataChanged() method gebruiken.
bedankt :D
Kheb al gedaan met tablemodel en dan addrow gedaan, da werkt dus ook
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan