gpt4 book ai didi

java - 我无法在图形顶部显示按钮

转载 作者:行者123 更新时间:2023-12-02 12:24:38 24 4
gpt4 key购买 nike

我的问题是如何在使用 Graphics 创建的圆圈顶部显示按钮。我的代码是:

public class Grafik extends JFrame {

public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Grafik frame = new Grafik();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}


public Grafik() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 784, 419);

JPanel contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPane);
contentPane.setLayout(null);

JButton btnNewButton = new JButton("Click");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
fire();
}
});

btnNewButton.setBounds(64, 73, 32, 32);
contentPane.add(btnNewButton);
}

public void fire()
{
JPanel panel = new JPanel(){
@Override
public void paint(Graphics g)
{
g.setColor(Color.black);
g.drawOval(20, 20, 400, 400);
g.fillOval(20,20,400,400);

g.setColor(Color.white);
g.drawOval(60, 60, 300, 300);
g.fillOval(60,60,300,300);



}
};

panel.setBounds(10, 27, 383, 233);
setContentPane(panel);

JButton btn = new JButton();
btn.setIcon(new ImageIcon("C:\\Users\\nuria\\Desktop\\icon1.png"));
btn.setBounds(75, 76, 32, 32);
panel.add(btn);

}
}

这段代码是我项目的一小部分。我的项目中有很多面板,并且我的 fire 方法没有首先被调用。我的意思是第六个面板调用了 fire 方法。我必须用按钮画两个圆圈。这些按钮应该位于两个圆圈之间。但我无法直接显示按钮。当我将鼠标悬停在按钮上时,它们会显示。我想在第六个面板打开时立即显示按钮。我上面有两个按钮。单击第一个按钮时,应打开另一个面板并在它们之间显示圆圈(使用图形创建)和另一个按钮(带有图标)。

最佳答案

    JPanel panel = new JPanel(){
@Override
public void paint(Graphics g)
{

不要重写paint()。自定义绘制是通过重写 paintComponent() 来完成的,并且不要忘记调用 super.paintComponent() 作为第一条语句。

当前代码的问题在于,通过覆盖绘制,您更改了面板的默认绘制逻辑,并且子组件永远不会被绘制。

查看 Custom Painting 上的 Swing 教程中的部分了解更多信息和示例,尤其是仔细观察绘制机制部分。

关于java - 我无法在图形顶部显示按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45532074/

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