I have been making this project without drag and drop in Java Swing and I have been encountered with an issue where the panel behind my shown panel in card layout do not disposes, i.e : my panel is transparent , so the panel behind it is also showed. What can I do to dispose of the back panel. Moreover when i slightly resize the frame , the back panel gets invisible.
What I have tried:
CODE FOR ADMIN PANEL:
<pre>package carsalessystem;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
public class adminPanel implements ActionListener {
public static final Font MY_FONT = new Font("Ubuntu Mono", Font.BOLD, 20);
JFrame frame = new JFrame();
JPanel panel1 = new JPanel();
static JPanel contPanel = new JPanel();
JButton admin = new JButton("Administrator Login");
JButton employee = new JButton("Employee Login");
Dimension screensize = Toolkit.getDefaultToolkit().getScreenSize();
ImageIcon image = new ImageIcon("C:\\Users\\faroo\\Desktop\\car sales stock\\ComputerImage.jpg");
Image scaledImage = image.getImage().getScaledInstance(screensize.width, screensize.height, Image.SCALE_SMOOTH);
JLabel backgroundImage;
CardLayout card = new CardLayout();
JButton[] buttons = new JButton[10];
String[] dropDown = new String[]{
"Hi", "Hello"
};
JList list = new JList(dropDown);
adminPanel() {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(null);
frame.setSize(screensize.width, screensize.height);
frame.setLocation((screensize.width / 2) - (frame.getWidth() / 2), (screensize.height) / 2 - (frame.getHeight() / 2));
frame.setLayout(null);
image = new ImageIcon(scaledImage);
backgroundImage = new JLabel(image);
backgroundImage.setBounds(0, 0, screensize.width, screensize.height);
panel1.setBounds(screensize.width / 2 - 480, 120, 960, 42);
panel1.setBackground(new Color(223, 223, 223));
panel1.setLayout(new FlowLayout(FlowLayout.LEADING));
contPanel.setBounds(panel1.getLocation().x,162,960,800);
contPanel.setBackground(Color.red);
contPanel.setLayout(card);
contPanel.add(new addProduct().addProdPanel,"2");
contPanel.add(new home().homePanel,"0");
buttons[0] = new JButton("HOME");
buttons[1] = new JButton("ABOUT US");
buttons[2] = new JButton("ADD PRODUCT");
buttons[3] = new JButton("REMOVE PRODUCT");
buttons[4] = new JButton("SALES ORDER");
buttons[5] = new JButton("SALES DETAILS");
buttons[6] = new JButton("LOG OUT");
for (int i = 0; i <= 6; i++) {
buttons[i].setFont(MY_FONT);
buttons[i].setFocusable(false);
buttons[i].setBackground(new Color(61, 94, 148));
buttons[i].setForeground(new Color(223, 223, 223));
panel1.add(buttons[i]);
buttons[i].addActionListener(this);
}
card.show(contPanel, "0");
frame.getContentPane().add(panel1);
frame.getContentPane().add(contPanel);
frame.getContentPane().add(backgroundImage);
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
for (int i = 0; i <= 6; i++) {
if (e.getSource() == buttons[i]) {
for (int j = 0; j <= 6; j++) {
buttons[j].setBackground(new Color(61, 94, 148));
}
buttons[i].setBackground(new Color(69, 89, 119));
}
}
if(e.getSource()==buttons[0]){
card.show(contPanel, "0");
}
if(e.getSource()==buttons[2]){
card.show(contPanel, "2");
}
}
}
CODE FOR THE PANEL HOME
package carsalessystem;
import java.awt.Color;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class home {
static JPanel homePanel =new JPanel();
JLabel label =new JLabel("HELLO HI");
home(){
homePanel.setBackground(Color.red);
homePanel.add(label);
homePanel.setVisible(true);
}
}
CODE FOR THE PANEL ADD PRODUCT
package carsalessystem;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class addProduct {
String name;
String type;
String company;
int price;
int quantity;
String description;
JPanel addProdPanel = new JPanel();
String types[] = {"Select Type", "Laptops", "Laptop Accessories", "Desktop Computer",
"Gaming Console", "Camera" , "Computer Accessories" , "Other"};
String companies[] = {"Select Company", "Dell", "Apple", "Samsung", "HP", "Acer",
"Microsoft", "Lenovo", "Other"};
JLabel label1 = new JLabel("PRODUCT NAME");
JLabel label2 = new JLabel("SELECT TYPE");
JLabel label3 = new JLabel("SELECT COMPANY");
JLabel label4 = new JLabel("PRODUCT PRICE");
JLabel label5 = new JLabel("PRODUCT QUANTITY");
JLabel label6 = new JLabel("PRODUCT DESCRIPTION");
Font newFont = new Font("Ubuntu Mono", Font.BOLD, 20);
Font newFont2 = new Font("Ubuntu Mono", Font.PLAIN, 18);
JTextField tx1 = new JTextField("e.g: Keyboard");
JComboBox cb2 = new JComboBox(types);
JComboBox cb3 = new JComboBox(companies);
JTextField tx4 = new JTextField("e.g: 2000");
JTextField tx5 = new JTextField("e.g: 150");
JTextArea tx6 = new JTextArea("e.g: Lightening Keyboard,\n with Anti-Ghosting Mode.");
JButton button1 =new JButton("ADD PRODUCT");
addProduct() {
addProdPanel.setBackground(new Color(0.0f, 0.0f, 0.0f, 0.5f));
addProdPanel.setLayout(null);
label1.setFont(newFont);
label1.setForeground(Color.white);
label1.setBounds(20, 40, 200, 20);
tx1.setBounds(20,72,250,30);
tx1.setFont(newFont2);
label2.setFont(newFont);
label2.setForeground(Color.white);
label2.setBounds(20, 110, 200, 20);
cb2.setBounds(20,142,250,30);
cb2.setFont(newFont2);
label3.setFont(newFont);
label3.setForeground(Color.white);
label3.setBounds(20, 180, 200, 20);
cb3.setBounds(20,212,250,30);
cb3.setFont(newFont2);
label4.setFont(newFont);
label4.setForeground(Color.white);
label4.setBounds(20, 250, 200, 20);
tx4.setBounds(20,282,250,30);
tx4.setFont(newFont2);
label5.setForeground(Color.white);
label5.setFont(newFont);
label5.setBounds(20, 320, 200, 20);
tx5.setBounds(20,352,250,30);
tx5.setFont(newFont2);
label6.setForeground(Color.white);
label6.setFont(newFont);
label6.setBounds(20,390,200,20);
tx6.setBounds(20,422,250,60);
tx6.setFont(newFont2);
button1.setBounds(45,490,200,40);
button1.setBackground(Color.darkGray);
button1.setForeground(Color.white);
button1.setFont(newFont);
tx1.addMouseListener(new textFieldListener());
tx4.addMouseListener(new textFieldListener());
tx5.addMouseListener(new textFieldListener());
tx6.addMouseListener(new textFieldListener());
button1.addActionListener(new buttonListener());
addProdPanel.setBounds(0, 0, 100, 200);
addProdPanel.add(label1);
addProdPanel.add(label3);
addProdPanel.add(label2);
addProdPanel.add(label4);
addProdPanel.add(label5);
addProdPanel.add(label6);
addProdPanel.add(tx1);
addProdPanel.add(cb2);
addProdPanel.add(cb3);
addProdPanel.add(tx4);
addProdPanel.add(tx5);
addProdPanel.add(tx6);
addProdPanel.add(button1);
addProdPanel.setVisible(true);
}
public class textFieldListener implements MouseListener{
@Override
public void mouseClicked(MouseEvent e) {
if(e.getSource()==tx1 )
tx1.setText("");
if( e.getSource()==tx4 )
tx4.setText("");
if(e.getSource()==tx5)
tx5.setText("");
if(e.getSource()==tx6)
tx6.setText("");
}
@Override
public void mousePressed(MouseEvent e){}
@Override
public void mouseReleased(MouseEvent e) {}
@Override
public void mouseEntered(MouseEvent e) {}
@Override
public void mouseExited(MouseEvent e) {}
}
public class buttonListener implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource()==button1){
name = tx1.getText();
type = cb2.getSelectedItem().toString();
company = cb3.getSelectedItem().toString();
price = Integer.parseInt(tx4.getText());
quantity = Integer.parseInt(tx5.getText());
description = tx6.getText();
System.out.println(name);
System.out.println(type);
System.out.println(company);
System.out.println(price);
System.out.println(quantity);
System.out.println(description);
}
}
}
}