Java 我无法在图形顶部显示按钮
我的问题是如何在用图形创建的圆的顶部显示按钮。我的代码是:Java 我无法在图形顶部显示按钮,java,swing,graphics,Java,Swing,Graphics,我的问题是如何在用图形创建的圆的顶部显示按钮。我的代码是: public class Grafik extends JFrame { public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { Grafik frame =
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)
{
不要覆盖油漆。自定义绘制是通过重写paintComponent完成的,不要忘记调用super.paintComponent作为第一条语句
当前代码的问题在于,通过覆盖绘制,您已经更改了面板的默认绘制逻辑,并且从未绘制子组件
有关更多信息和示例,请查看Swing教程中的部分,特别是关于更详细地了解绘制机制的部分。1请对代码和代码片段、结构化文档(如HTML/XML或输入/输出)使用代码格式。为此,请选择文本并单击邮件发布/编辑表单顶部的{}按钮。2 Java GUI必须在不同的操作系统、屏幕大小、屏幕分辨率等上工作,在不同的地区使用不同的PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或与布局填充和边框一起使用。