Я пытаюсь получить JButtons, которые были добавлены в JPanel, чтобы отображаться во время выполнения программы, однако они появляются только при наведении мыши на них, они остаются невидимыми до тех пор ,JButtons не отображаются до тех пор, пока MouseOver
Ниже мой код, я пробовал перерисовать() и revalidate() без везения.
Там также, как представляется, проблема с высоты JPanel, это, кажется, больше, чем в главном окне по какой-то причине
import java.awt.Color;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public final class SideMenu extends JPanel implements ActionListener{
private final int width;
private final int height;
public SideMenu(int width, int height){
this.width = width;
this.height = height;
this.setLayout(new GridLayout(0,1));
this.add(new JButton("button1"));
this.add(new JButton("button2"));
this.add(new JButton("button3"));
this.revalidate();
this.repaint();
}
@Override
public void paint(Graphics g) {
super.paintComponent(g);
g.setColor(Color.black);
g.fillRect(0, 0, width, height);
}
@Override
public void actionPerformed(ActionEvent e) {
repaint();
}
public static void main(String[] args){
int width = 300, height = 400;
JFrame jf = new JFrame();
jf.setTitle("Fish Tank");
jf.setSize(width, height);
jf.setVisible(true);
jf.setLayout(null);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
///jf.setResizable(false);
SideMenu side_menu = new SideMenu(100,height);
jf.add(side_menu);
side_menu.setBounds(200, 0, 100, height);
}
}
'jf.setVisible (true);' должно быть последним утверждением в вашем 'main' методе. – Tom