- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
大家好,我已经被动地使用过这个页面很多次了,因为有很多很好的解释,但今天到目前为止,我不得不自己问一个问题,因为在我看来,发生的事情很奇怪。
我使用 Javax.Swing 中的 JFrame 编写了一个小游戏,其中包含一个 JMenu。该程序实际上运行良好,并且 JMenuBar 也在运行并显示。但是,当我运行该程序时,可能会发生菜单未显示的情况,尽管它确实存在(我可以使用快捷方式)。当显示菜单时,在我看来或多或少是随意的。我没有更改任何代码,并且在 eclipse 中没有警告或错误,但是有一次我看不到菜单栏。
到目前为止,我看不出这种情况何时发生的任何模式。我只能怀疑它与我关闭框架/程序的方式有关以及由于我的操作系统在后台发生的事情。
Windows 7 旗舰版 SP1Eclipse Java开发工具版本:3.10.1.v20150204-1700Java 版本 1.8.0_45
这是我生成 JFrame 的类的代码:然后在 actionhandler 中有一些东西来启动游戏等,还有一个主类来调用 Frame 类的构造函数。
public class Frame extends JFrame implements ActionListener{
private Screen s;
public Frame()
{
//---set frame
this.setUndecorated(false);
this.setTitle("Super Tick Tack Toe");
ImageIcon frameIcon = new ImageIcon(Frame.class.getResource("res/STTT_icon_64x64.png"));
this.setIconImage(frameIcon.getImage());
this.setDefaultCloseOperation(Frame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setResizable(false);
this.setSize(windowWidth,windowHeight);
this.setLocationRelativeTo(null);
//---game Menu
//---exit
JMenuItem exit = new JMenuItem("exit");
KeyStroke escKeyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE,0);
exit.setAccelerator(escKeyStroke);
exit.addActionListener(this);
//---load
JMenuItem save = new JMenuItem("save game");
KeyStroke saveKeyStroke = KeyStroke.getKeyStroke("control S");
save.setAccelerator(saveKeyStroke);
save.addActionListener(this);
//---save
JMenuItem load = new JMenuItem("load game");
KeyStroke loadKeyStroke = KeyStroke.getKeyStroke("control L");
load.setAccelerator(loadKeyStroke);
load.addActionListener(this);
//---preferences
JMenuItem preferences = new JMenuItem("preferences");
preferences.addActionListener(this);
JMenuItem newGame = new JMenuItem("new game");
KeyStroke newGameKeyStroke = KeyStroke.getKeyStroke("F2");
newGame.setAccelerator(newGameKeyStroke);
newGame.addActionListener(this);
//---pack game
JMenu game = new JMenu("game");
game.add(newGame);
game.add(new JSeparator()); // SEPARATOR
game.add(save);
game.add(load);
game.add(new JSeparator()); // SEPARATOR
game.add(preferences);
game.add(new JSeparator()); // SEPARATOR
game.add(exit);
//---help Menu
//---about
JMenuItem about = new JMenuItem("about STTT");
about.addActionListener(this);
KeyStroke aboutKeyStroke = KeyStroke.getKeyStroke("F12");
about.setAccelerator(aboutKeyStroke);
//---rules
JMenuItem rules = new JMenuItem("rules");
rules.addActionListener(this);
KeyStroke rulesKeyStroke = KeyStroke.getKeyStroke("F1");
rules.setAccelerator(rulesKeyStroke);
//---pack help
JMenu help = new JMenu("help");
help.add(rules);
help.add(new JSeparator()); // SEPARATOR
help.add(about);
//---pack menu bar
JMenuBar mb = new JMenuBar();
mb.add(game);
mb.add(help);
this.setJMenuBar(mb);
s = new Screen();
s.setBounds(0, 0, windowWidth, windowHeight);
add(s);
}
public void repaint()
{
s.repaint();
}
private class Screen extends JLabel{
private static final long serialVersionUID = 1L;
@Override
public void paintComponent(Graphics gg)
{
super.paintComponent(gg);
if(SuperTickTackToe.playing){
Graphics2D g = (Graphics2D) gg;
STTTgame.draw(g);
}
}
}
最佳答案
this.setVisible(true);
this.setResizable(false);
this.setSize(windowWidth,windowHeight);
this.setLocationRelativeTo(null);
不要在构造函数的开头调用上述代码。
在创建所有组件并将其添加到框架之后,您应该调用 setVisible(true) 作为框架构造函数中的最后一条语句。
s = new Screen();
s.setBounds(0, 0, windowWidth, windowHeight);
add(s);
this.setResizable(false);
this.setSize(windowWidth,windowHeight);
this.setLocationRelativeTo(null);
this.setVisible(true);
此外,既然 JFrame 包含标题栏和边框,那么 Screen 和 JFrame 的大小怎么可能相同呢?你真的应该只使用框架的 pack() 方法来确定它的大小。然后,您添加到框架中的组件的首选大小将用于确定框架大小。
关于java - JMenuBar 在连续运行中是否显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30006712/
我有一个 if 语句,如下所示 if (not(fullpath.lower().endswith(".pdf")) or not (fullpath.lower().endswith(tup
然而,在 PHP 中,可以: only appears if $foo is true. only appears if $foo is false. 在 Javascript 中,能否在一个脚
XML有很多好处。它既是机器可读的,也是人类可读的,它具有标准化的格式,并且用途广泛。 它也有一些缺点。它是冗长的,不是传输大量数据的非常有效的方法。 XML最有用的方面之一是模式语言。使用模式,您可
由于长期使用 SQL2000,我并没有真正深入了解公用表表达式。 我给出的答案here (#4025380)和 here (#4018793)违背了潮流,因为他们没有使用 CTE。 我很欣赏它们对于递
我有一个应用程序: void deleteObj(id){ MyObj obj = getObjById(id); if (obj == null) { throw n
我的代码如下。可能我以类似的方式多次使用它,即简单地说,我正在以这种方式管理 session 和事务: List users= null; try{ sess
在开发J2EE Web应用程序时,我通常会按以下方式组织我的包结构 com.jameselsey.. 控制器-控制器/操作转到此处 服务-事务服务类,由控制器调用 域-应用程序使用的我的域类/对象 D
这更多是出于好奇而不是任何重要问题,但我只是想知道 memmove 中的以下片段文档: Copying takes place as if an intermediate buffer were us
路径压缩涉及将根指定为路径上每个节点的新父节点——这可能会降低根的等级,并可能降低路径上所有节点的等级。有办法解决这个问题吗?有必要处理这个吗?或者,也许可以将等级视为树高的上限而不是确切的高度? 谢
我有两个类,A 和 B。A 是 B 的父类,我有一个函数接收指向 A 类型类的指针,检查它是否也是 B 类型,如果是将调用另一个函数,该函数接受一个指向类型 B 的类的指针。当函数调用另一个函数时,我
有没有办法让 valgrind 使用多个处理器? 我正在使用 valgrind 的 callgrind 进行一些瓶颈分析,并注意到我的应用程序中的资源使用行为与在 valgrind/callgrind
假设我们要使用 ReaderT [(a,b)]超过 Maybe monad,然后我们想在列表中进行查找。 现在,一个简单且不常见的方法是: 第一种可能性 find a = ReaderT (looku
我的代码似乎有问题。我需要说的是: if ( $('html').attr('lang').val() == 'fr-FR' ) { // do this } else { // do
根据this文章(2018 年 4 月)AKS 在可用性集中运行时能够跨故障域智能放置 Pod,但尚不考虑更新域。很快就会使用更新域将 Pod 放入 AKS 中吗? 最佳答案 当您设置集群时,它已经自
course | section | type comart2 : bsit201 : lec comart2 :
我正在开发自己的 SDK,而这又依赖于某些第 3 方 SDK。例如 - OkHttp。 我应该将 OkHttp 添加到我的 build.gradle 中,还是让我的 SDK 用户包含它?在这种情况下,
随着 Rust 越来越充实,我对它的兴趣开始激起。我喜欢它支持代数数据类型,尤其是那些匹配的事实,但是对其他功能习语有什么想法吗? 例如标准库中是否有标准过滤器/映射/归约函数的集合,更重要的是,您能
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎与 help center 中定义的范围内的编程无关。 . 关闭 9 年前。 Improve
我一直在研究 PHP 中的对象。我见过的所有示例甚至在它们自己的对象上都使用了对象构造函数。 PHP 会强制您这样做吗?如果是,为什么? 例如: firstname = $firstname;
...比关联数组? 关联数组会占用更多内存吗? $arr = array(1, 1, 1); $arr[10] = 1; $arr[] = 1; // <- index is 11; does the
我是一名优秀的程序员,十分优秀!