Manglende forståelse af OOP i Java
HeyMit problem er at der en del af objekt orienteret programmering, som jeg ikke helt har forstået.
Mit konkrete problem:
Jeg har en frame med et panel
Jeg vil gerne tilføje labels til panelet når der trykkes på en knap.
MainFrame.AllProducts.Addproducts() kaldes fra knappens actionlistener.
Klassen ser nogenlunde sådan ud:
//Main.class:
ProductList AllProducts = new ProductList();
JPanel DisplayPanel = new JPanel();
public Main()
{
AllProducts.SetDisplay(DisplayPanel);
}
//ProductList class:
public class ProductList {
private Mysql db;
private ProductItems Items = new ProductItems();
private List catID = new LinkedList();
private JPanel Display = new JPanel();
private int rows = 0;
/** Creates a new instance of ProductList */
public ProductList() {
}
public void SetDisplay(JPanel showProd) {
if(showProd != null)
{
Display = showProd;
Display.setLayout(new GridBagLayout());
}
}
public void ClearList()
{
Items = new ProductItems();
Display.removeAll();
Display.setLayout(new GridBagLayout());
}
public void addProduct(int newID, ProductList from)
{
List P = from.FindProd(newID);
Items.addProduct((Integer) P.get(0),(String) P.get(1), (Integer) P.get(2),(Integer) P.get(3),Items.Size());
String[] p = new String[2];
Display.add(new JLabel((String) P.get(1)), InsertProduct(0,rows++));
Display.add(String.valueOf((Integer) P.get(3)), InsertProduct(1,rows));
}
private void addCat(int id, String string, int order) {
List list = new LinkedList();
list.add(id);
list.add(string);
catID.add(order,list);
}
public List GetCat(){
return catID;
}
public List FindProd(int id)
{
return Items.FindItem(id,0);
}
public List FindProd(int id,String Cell)
{
List tmp = null;
if(Cell == "Categori")
tmp = Items.FindItems(id,2);
return tmp;
}
public void CreateList() throws SQLException{
try {
this.db = new Mysql();
} catch (ClassNotFoundException ex) {
ex.printStackTrace();
} catch (IllegalAccessException ex) {
ex.printStackTrace();
} catch (InstantiationException ex) {
ex.printStackTrace();
} catch (SQLException ex) {
ex.printStackTrace();
}
ResultSet maincat = db.GetQuery("SELECT IDcat,kategori,orderby FROM Kategorier");
while(maincat.next())
addCat(maincat.getInt("IDcat"), maincat.getString("kategori"), maincat.getInt("orderby"));
maincat = db.GetQuery("SELECT IDprod,navn,IDcat,pris_dk,orderby FROM Produkter ORDER BY orderby;");
while(maincat.next())
Items.addProduct(maincat.getInt("IDprod"), maincat.getString("navn"), maincat.getInt("IDcat"), maincat.getInt("pris_dk"), maincat.getInt("orderby"));
}
private GridBagConstraints InsertProduct(int xval, int yval)
{
GridBagConstraints c = new GridBagConstraints();
c.gridx = xval;
c.gridy = yval;
c.weightx = 1;
c.weighty = 1;
c.insets = new java.awt.Insets(5,0,5,0);
return c;
}
}
Hvordan skriver jeg til et JPanel i Main fra en method i en klasse?
Min fremgangsmåde virker ikke og når jeg compiler skriver java også "uses unchecked or unsafe operations." Jeg går udfra at det har noget at gøre med at jeg skriver til en static variable fra en dynamisk klasse?
Hvad er det jeg ikke forstår?
Hilsen
Jesper