如何将 JPanel 放在 JFrame 的前面
Posted
技术标签:
【中文标题】如何将 JPanel 放在 JFrame 的前面【英文标题】:How to bring a JPanel to the front of the JFrame 【发布时间】:2019-08-04 17:38:06 【问题描述】:我有一个项目明天到期,所以我需要帮助。 我正在制作一个时钟,我在很大程度上得到了其他人的帮助,我需要在前面放一个 JButton。我将按钮作为 JPanel 的一部分
public static void main(String[] args)
JFrame window = new JFrame("Clock");
Color c=new Color(0,0,0);
Clock clock = new Clock();
JPanel p=new JPanel();
window.setPreferredSize(new Dimension(400,400));
window.pack();
window.setBackground(c);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Button buton =new Button("Stopwatch");
p.add(buton);
window.getContentPane().add(clock);
window.setVisible(true);
clock.start();
g.setColor(Color.black);//Background color
g.setFont(new Font("ComicSans", Font.BOLD, 20));
g.setColor(Color.white);//inner circle color
g.fillOval(xcenter - 150, ycenter - 150, 300, 300);
LocalDateTime time =LocalDateTime.now();
String strTime =time.toString().substring(14,19);
String strHour =time.toString().substring(11,13);
int hour =_12hrFormat(strHour);
g.setColor(Color.black);//time color
g.drawString(hour+":"+strTime ,141,300);
g.setColor(Color.black);//number color
g.drawString("9", xcenter - 145, ycenter +10);
g.drawString("3", xcenter + 135, ycenter +10);
g.drawString("12", xcenter-10 , ycenter - 130);
这是与视觉效果有关的大部分代码
【问题讨论】:
这段代码没有多大意义。其中一半在方法之外。它引用了您未包含的内容。这肯定不是minimal reproducible example。 “将 JPanel 放在 JFrame 的前面”是什么意思? 关闭 main 块
后的第二个代码半部分中以 g.
开头的行是什么?也许您可以发布屏幕截图并在其上标记您想要的位置。
【参考方案1】:
您的代码肯定没有完成。但是让我们假设您在 paintComponent 中绘制椭圆和其他五线谱。您还必须将 JPanel 添加到 Frame。
JFrame frame = new JFrame("some frame");
JPanel panel = new JPanel();
frame.setContentPane(panel);
然后你可以添加任何你想要的东西。
我希望你的 g 是paintComponent 的一部分。
【讨论】:
谢谢,我只是恐慌,因为这一切都在明天到期以上是关于如何将 JPanel 放在 JFrame 的前面的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JPanel 和 JFrame 的 contentPane 之间添加间距?