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 :
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:
Begrip.java:
Kan iemand me helpen om deze data in men jTable (jTable1 hier ) te krijgen, of toelichten hoe ik het het beste zou oplossen?
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?
