gpt4 book ai didi

java - 如何在图形顶部绘制 JMenuBar

转载 作者:行者123 更新时间:2023-12-03 07:12:10 25 4
gpt4 key购买 nike

我正在用Java编写一个基本的计时器程序,在该程序中我希望在顶部有一个菜单栏。我现在拥有的代码是:

public Main() {
JMenuBar menubar = new JMenuBar();

setJMenuBar(menubar);

JMenu menu = new JMenu("Test");
menubar.add(menu);

JMenuItem menuitem = new JMenuItem("Item");
menu.add(menuitem);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(500, 500);
setTitle(Namer.name);
new Timer(delay, timer).start();
new Timer(1, new Refresher()).start();
setResizable(false);
setVisible(true);
}

public void paint(Graphics g) {
Graphics buffer = unscreen.getGraphics();
buffer.setColor(Color.white);
buffer.fillRect(0, 0, 500, 500);
buffer.setColor(Color.black);
buffer.setFont(new Font("Times New Roman", Font.PLAIN, 25));
// buffer.drawString("hours:minutes:seconds: ", 25, 100);
buffer.drawString(hourss + numhours + ":" + minutess + numminutes + ":"
+ secondss + numseconds, 100, 100);
g.drawImage(unscreen, 0, 0, null);
}

当我运行这段代码时,我得到了我所期望的一切,其中一些数字显示了程序已经运行了多长时间,以及屏幕顶部的菜单栏(菜单栏除外)。我尝试过注释掉绘制方法,当我这样做时它就起作用了。有没有更好的方法来完成我正在做的事情,或者有不同的解决方案来解决我的问题?另外,如果有更好的方法在窗口上打印内容,我不需要在那里使用 Paint 方法。

最佳答案

直接绘制 JFrame 并不是一个好主意。扩展 JComponent、重写其 PaintComponent() 来执行自定义绘制并将其添加到 JFrame 可能会更简单。这样 JMenuBar 就可以在 JFrame 上运行,一切正常。

   public class DrawingSurface extends JComponent{

public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics buffer = unscreen.getGraphics();
buffer.setColor(Color.white);
buffer.fillRect(0, 0, 500, 500);
buffer.setColor(Color.black);
buffer.setFont(new Font("Times New Roman", Font.PLAIN, 25));
// buffer.drawString("hours:minutes:seconds: ", 25, 100);
buffer.drawString(hourss + numhours + ":" + minutess + numminutes + ":"
+ secondss + numseconds, 100, 100);
g.drawImage(unscreen, 0, 0, null);
}
}

现在将 DrawingSurface 的实例添加到 JFrame。

关于java - 如何在图形顶部绘制 JMenuBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6370858/

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