gpt4 book ai didi

java - JButton 未显示在屏幕上

转载 作者:行者123 更新时间:2023-11-30 03:31:01 25 4
gpt4 key购买 nike

我正在尝试制作一个应用程序,只需单击按钮即可更改交通灯的状态。我的代码:主要

import javax.swing.*;

public class PP416
{
public static void main(String[] args)
{
JFrame frame = new JFrame("Traffic light");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.getContentPane().add(new TrafficPanel());
frame.pack();
frame.setVisible(true);
}
}

JPanel 类:

import javax.swing.*;
import java.awt.*;
import java.awt.Event;

public class TrafficPanel extends JPanel
{
private JButton button;
private int indicator = 0; // Light is off

public TrafficPanel()
{
button = new JButton("Change");

this.add(button);
}

public void paint(Graphics g)
{
if (indicator == 0)
{
g.drawOval(30, 40, 30, 30);
g.drawOval(30, 70, 30, 30);
g.drawOval(30, 100, 30, 30);
}
}

}

按钮没有出现,只有椭圆形。谁能帮我解决这个问题?

最佳答案

不要重写paint,而是重写paintComponent并且最重要,调用super的方法。缺少 super 调用可能会导致 JPanel 无法很好地绘制其子组件。

例如,

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if (indicator == 0) {
g.drawOval(30, 40, 30, 30);
g.drawOval(30, 70, 30, 30);
g.drawOval(30, 100, 30, 30);
}
}

关于java - JButton 未显示在屏幕上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29038438/

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