Hello I'm new to Java so all help appreciated
I have already searched for similar threads but with no results helping me
I want to make the text in JTextField to search for the data in the JTable and highlight it.
Here is my customer class:
public class Kund {
private String fNamn;
private String efterNamn;
private String email;
private String adress;
private String telefon;
private String kundnr;
public String getfNamn() {
return fNamn;
}
public void setfNamn(String fNamn) {
this.fNamn = fNamn;
}
public String getEfterNamn() {
return efterNamn;
}
public void setEfterNamn(String efterNamn) {
this.efterNamn = efterNamn;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getAdress() {
return adress;
}
public void setAdress(String adress) {
this.adress = adress;
}
public String getTelefon() {
return telefon;
}
public void setTelefon(String telefon) {
this.telefon = telefon;
}
public String getKundnr() {
return kundnr;
}
public void setKundnr(String kundnr) {
this.kundnr = kundnr;
}
}
Here is my registration class:
import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
public class KundRegister extends AbstractTableModel {
/*
* vi definierar index nummerna för kolumnerna in tablet
* för att kunna returna rätt värde i getValue() metoden
* och uppdatera rätt värde i setValue() metoden
*/
private static final int COLUMN_FOR_NAMN = 0;
private static final int COLUMN_EFTER_NAMN = 1;
private static final int COLUMN_KUND_NR =2;
private static final int COLUMN_EMAIL = 3;
private static final int COLUMN_ADRESS = 4;
private static final int COLUMN_TELEFON = 5;
//Listan innehåller kunds objekts
private List<Kund> listkunds;
//Namnet för kolumnheadern i tablet
private String[] columnNames;
//Skapar ny instans av modellen
public KundRegister() {
// initierar kund list
this.listkunds = new ArrayList<Kund>();
// definierar kolumnnamn
columnNames = new String[] {"Förnamn", "Efternamn","Kundnummer",
"Email", "Adress", "Telefon"};
}
//returnerar antalet kolumner i tablet
public int getColumnCount() {
return columnNames.length;
}
//returnerar namnet av en specifik kolumn i tablet
public String getColumnName(int column) {
return columnNames[column];
}
//returnerar antalet rader i tablet
public int getRowCount() {
return listkunds.size();
}
/*
* Denna metod kommer att användas av tablet komponenten för att hämta
* värde av en given cell vid [row, column]
*/
public Object getValueAt(int rowIndex, int columnIndex) {
Object value = null;
Kund kund = listkunds.get(rowIndex);
switch (columnIndex) {
case COLUMN_FOR_NAMN:
value = kund.getfNamn();
break;
case COLUMN_EFTER_NAMN:
value = kund.getEfterNamn();
break;
case COLUMN_EMAIL:
value = kund.getEmail();
break;
case COLUMN_ADRESS:
value = kund.getAdress();
break;
case COLUMN_TELEFON:
value = kund.getTelefon();
break;
case COLUMN_KUND_NR:
value = kund.getKundnr();
}
return value;
}
/*
* Denna metod kommer att användas av tablet komponenten när
* användaren redigerar en given cell vid [row, column]
* Motsvarande Kund objektet kommer att uppdateras
*/
public void setValueAt(Object value, int rowIndex, int columnIndex) {
Kund kund = listkunds.get(rowIndex);
switch (columnIndex) {
case COLUMN_FOR_NAMN:
kund.setfNamn(value.toString());
break;
case COLUMN_EFTER_NAMN:
kund.setEfterNamn(value.toString());
break;
case COLUMN_KUND_NR:
kund.setKundnr(value.toString());
break;
case COLUMN_EMAIL:
kund.setEmail(value.toString());
break;
case COLUMN_ADRESS:
kund.setAdress(value.toString());
break;
case COLUMN_TELEFON:
kund.setTelefon(value.toString());
break;
}
}
//Eftersom varje cell i tablet kan ändras, returnerar vi alltid värdet "true"
public boolean isCellEditable(int rowIndex, int columnIndex) {
return true;
}
/*Denna metod tillåter programmet att lägga till en tom kund
* En ny rad kommer att bifogas i tablet
*/
public void nyKund(Kund akund) {
this.listkunds.add(akund);
}
/*
* Denna metod tillåter programmet att ta bort den valda raden i tablet,
* motsvarande Kundobjekt i Kund listan tas också bort.
*/
public void tabortKund(int rowIndex) {
this.listkunds.remove(rowIndex);
}
}
and here is my Gui class:
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
public class KundGUI extends JFrame {
private JTable tableContact = new JTable();
private KundRegister contactModel = new KundRegister();
private JButton buttonNy = new JButton("Ny kund");
private JButton buttonTabort = new JButton("Ta bort kund");
private JButton buttonSok = new JButton("Sök");
private JButton buttonAvbryta = new JButton("Avbryt");
private JButton buttonSpara = new JButton("Spara");
private JTextField textField = new JTextField("Sök..");
public KundGUI() {
super("Kundhantering");
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setLayout(new BorderLayout());
tableContact.setModel(contactModel);
getContentPane().add(new JScrollPane(tableContact), BorderLayout.CENTER);
buttonNy.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
laggtillKund();
}
});
buttonTabort.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
tabortKund();
}
});
textField.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
sökKund();
}
});
buttonAvbryta.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
AvbrytaProgram();
}
});
buttonSpara.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent event){
sparaProgram();
}
});
//Panelen längst ner
JPanel panelButton = new JPanel();
panelButton.setLayout(new FlowLayout());
panelButton.add(buttonNy);
panelButton.add(buttonTabort);
panelButton.add(buttonSok);
panelButton.add(buttonAvbryta);
panelButton.add(buttonSpara);
//Panelen längst upp
JPanel panelText = new JPanel();
panelText.setLayout(new GridLayout());
panelText.add(textField);
buttonNy.setToolTipText("Klicka här för att lägga till ny kund");
buttonTabort.setToolTipText("Klicka här för att ta bort markerad kund");
buttonAvbryta.setToolTipText("Klicka här för att Avbryta programmet");
buttonSok.setToolTipText("Klicka här för att söka på en kund");
buttonSpara.setToolTipText("Klicka för för att spara");
//Positionen av panelerna
getContentPane().add(panelButton, BorderLayout.PAGE_END);
getContentPane().add(panelText, BorderLayout.PAGE_START);
pack();
setLocationRelativeTo(null);
setVisible(true);
}
//Metoderna som är kopplade till knapparna
private void laggtillKund() {
contactModel.nyKund(new Kund());
contactModel.fireTableDataChanged();
}
private void tabortKund() {
int rowIndex = tableContact.getSelectedRow();
int x = JOptionPane.showConfirmDialog(null, "Är du säker att du vill ta bort kunden?", "Borttagning av kund", JOptionPane.INFORMATION_MESSAGE);
if (rowIndex >= 0 && x ==0) {
contactModel.tabortKund(rowIndex);
contactModel.fireTableDataChanged();
}
}
private void sökKund(){
}
private void sparaProgram(){
dispose();
}
private void AvbrytaProgram() {
int x = JOptionPane.showConfirmDialog(null, "Är du säker att du vill avbryta?", "Stäng ner kundhantering", JOptionPane.INFORMATION_MESSAGE);
if(x==0)
dispose();
}
}
Best regards
John