gpt4 book ai didi

java - JButton 直到 MouseOver 才会出现

转载 作者:行者123 更新时间:2023-11-29 05:15:20 25 4
gpt4 key购买 nike

我正在尝试让已添加到 JPanel 的 JButtons 在程序执行期间显示,但是它们仅在我将鼠标悬停在它们上面时出现,直到那时它们仍然不可见。

下面是我的代码,我试过 repaint() 和 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);
}
}

最佳答案

使用paintComponent(..)方法代替paint(..):

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.black);
g.fillRect(0, 0, width, height);
}

阅读更多关于 custom paintings 的信息.

当您将所有组件添加到 JFrame 时,在构建 GUI 的最后调用 jf.setVisible(true);

关于java - JButton 直到 MouseOver 才会出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26760367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com