好的,所以我在JAVA非常棒,而且编程一般。我正在尝试制作一个带有GUI界面的摇滚,纸张,剪刀应用程序。我正在尝试的是我想到的最简单的事情,按下你选择的按钮(r,p或s),这将使程序其余部分使用的变量与计算机的选择进行比较,找到胜利者等我已经完成了程序,问题是GUI的东西。我正在使用netbeans和JFrame,这对我来说是全新的。我有很多问题,也许有一个很好的教程可供我链接,但使用官方netbeans网站到目前为止没有多大帮助。反正:
我不确定将我的主要方法代码放在文本程序中,创建一个新类,或者将它放在我使用的框架的主方法中。
因此,我甚至无法编译的原因是主要功能是尝试使用我想在按钮中创建的变量。我想,整个操作顺序对我来说都是未知的。我查看了netbeans示例,我认为我可以通过做一些更复杂的事情来完成这项工作,但似乎没必要?
答案 0 :(得分:1)
这是一个开始的好地方learning about Swing.我要提醒您,如果您想快速创建一个大的GUI,使用NetBeans是很好的,但如果您还不熟悉,可能会导致更多的问题。 Swing是如何工作的。
我在项目中学到的一些技巧:
Start a new game Get the player's choice Randomly generate a choice for the computer Compare the choices if the player's choice is stronger player wins else computer wins return the winner
在构建GUI时,使用Model-View-Controller模式是一个很好的起点。这可以确保程序组件之间存在分离;如果您需要更改视图或模型,则不要破坏其他组件。
这在Java的实践中通常意味着你将视图和控制器包装在一起,通常像qpingu所指出的那样扩展JFrame。 JFrame需要引用您的模型类和包含各种控件的面板。
答案 1 :(得分:1)
开始放入代码的地方就像你习惯的那样在源包目录中通常命名为你所谓的新项目:YourFileName.java
关键是在新项目的文件名中查找您在设置中添加的名称。
进入后,有一些方法可以为您启动应用程序。在底部是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);
}
}
就个人而言,我更喜欢桌面应用程序,因为它开始时会为您提供大量预先生成的代码。
答案 2 :(得分:0)
您想在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.
}