【问题标题】:using buttons in netbeans gui frame在 netbeans gui 框架中使用按钮
【发布时间】:2010-10-13 13:25:33
【问题描述】:
好的,所以我在 JAVA 方面很菜鸟,而且真的是一般的编程。我正在尝试制作一个使用 GUI 界面运行的石头、纸、剪刀应用程序。我正在尝试的是我想到的最简单的事情,按下一个按钮供您选择(r、p 或 s),这将在程序的其余部分中使用一个变量来与计算机的选择进行比较,找到获胜者等。我已经完成了程序,问题是 GUI 的东西。我正在使用 netbeans 和 JFrame,这对我来说是全新的。我有很多问题,也许有人可以链接到我那里有一个很好的教程,但是到目前为止,使用官方的 netbeans 站点并没有多大帮助。总之:
-
我不确定将我的 main 方法代码放在文本程序中的哪个位置,创建一个新类,或者将它放在我使用的框架的 main 方法中。
李>
正因为如此,我什至无法编译的原因是主函数试图使用我想在按钮中创建的变量。我猜我不知道整个操作顺序。我查看了 netbeans 示例,我认为我可以通过做一些更复杂的事情来完成这项工作,但这似乎没有必要?
【问题讨论】:
标签:
java
user-interface
button
jframe
netbeans6.5
【解决方案1】:
这是一个很好的起点learning about Swing. 我会提醒你,如果你想快速创建一个大的 GUI,使用 NetBeans 非常棒,但如果你还不熟悉 Swing有效。
我在项目中学到的一些技巧:
- 在开始编写 GUI 之前考虑一下程序的底层模型是什么。例如,也许您会使用类似以下伪代码的游戏类:
开始新游戏
获得玩家的选择
为计算机随机生成一个选项
比较选择
如果玩家的选择更强
玩家获胜
否则计算机获胜
返回获胜者
【解决方案2】:
像你习惯的那样开始输入代码的地方是源包目录,通常命名为你称之为新项目的东西:YourFileName.java
关键是在新项目的文件名中查找你在setup中添加的名称。
进入后,有一些方法可以为您启动应用程序。而在底部是你和我最熟悉的 main() 所在的位置:)。
...
@Override
protected void configureWindow(java.awt.Window root) {
}
/**
* A convenient static getter for the application instance.
* @return the instance of DesktopApplication1
*/
public static DesktopApplication1 getApplication() {
return Application.getInstance(DesktopApplication1.class);
}
/**
* Main method launching the application.
*/
public static void main(String[] args) {
launch(DesktopApplication1.class, args);
}
}
就我个人而言,我更喜欢桌面应用程序,因为它开始时会为您预先生成大量代码。
【解决方案3】:
你想找到一些关于 Swing 的文章和教程。
这里有一些代码可以帮助你:
// RockPaperScissors is the JFrame as well as the KeyListener.
// You could make another class to handle the key presses instead by doing:
// addKeyListener(new myOtherClass());
// So long as myOtherClass implements KeyListener
class RockPaperScissors extends JFrame implements KeyListener {
public RockPaperScissors() {
// Listen for any key presses.
addKeyListener(this);
}
public void keyPressed(KeyEvent e) {
// Figure out which key was pressed based on it's code.
// http://java.sun.com/j2se/1.4.2/docs/api/java/awt/event/KeyEvent.html
switch (e.getKeyCode()) {
case e.VK_R:
// Rock
break;
case e.VK_P:
// Paper
break;
case e.VK_S:
// Scissors
break;
}
}
// You can use these if you want, but we don't care about them.
public void keyReleased(KeyEvent e) { }
public void keyTyped(KeyEvent e) { }
}
void main() {
// Set up the GUI (which is just a JFrame!)
new RockPaperScissors();
// The main program can exit because the JFrame runs on it's own thread.
}