I added listeners to my JButtons for the popup menu but when the popup menu appears the JButtons disappear and I would need to hover my cursor on the buttons to make them appear again. Why is it like this?
(all the methods here are in the same class)
public Inventory() {
setLayout(null);
setBounds(0, 0, 175, 210);
initPopupMenu(); // this just sets what is inside the popup menu
int x;
// 30 buttons
for(x = 0; x < 30; x++) {
button[x] = new JButton();
add(button[x]);
button[x].addMouseListener(this);
}
x = 0;
// it's a grid of buttons
for(int i = 0; i < 5; i++)
for(int j = 0; j < 6; j++) {
button[x].setBounds(i*35+1,j*35+1, 33,33);
x++;
}
}
public void mouseClicked(MouseEvent e) {
for(int j = 0; j < 30; j++) // i tried this one but it still disappears
button[j].repaint();
for(int i = 0; i < 30; i++) {
if(e.getSource() == button[i]) {
System.out.println("You pressed Button "+i);
popup.show(e.getComponent(), e.getX(), e.getY());
}
}
}
This is what happens,
(source: uploadir.com)
(source: uploadir.com)
Stop using null
Layout, seems like that can be one of the issues regarding this. Your JFrame
appears sort of BLACK
to me, is this some THEME
or a new LOOK AND FEEL
you are using, that can be the cause of this thing too. Here check this out, it's working flawlessly here with this code :
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ButtonPopUp
{
private static final int SIZE = 30;
private JButton[] button = new JButton[SIZE];
private JPopupMenu popup = new JPopupMenu("Hello World");
private void createAndDisplayGUI()
{
JFrame frame = new JFrame("Button POP UP Example");
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame.setLocationByPlatform(true);
final JPanel contentPane = new JPanel();
contentPane.setLayout(new GridLayout(0, 5));
JMenuItem menuItem1 = new JMenuItem("Menu Item 1");
JMenuItem menuItem2 = new JMenuItem("Menu Item 2");
//popup.add(greetings);
popup.insert(menuItem1, 0);
popup.insert(menuItem2, 1);
for (int i = 0; i < SIZE; i++)
{
button[i] = new JButton();
button[i].setBorder(BorderFactory.createEtchedBorder());
button[i].addMouseListener(new MouseAdapter()
{
public void mouseClicked(MouseEvent me)
{
System.out.println("I am WORKING!!");
popup.show((JComponent)me.getSource(), me.getX(), me.getY());
}
});
contentPane.add(button[i]);
}
frame.getContentPane().add(contentPane);
frame.setSize(175, 250);
frame.setVisible(true);
}
public static void main(String... args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new ButtonPopUp().createAndDisplayGUI();
}
});
}
}
Here is the output :