【问题标题】:using buttons in netbeans gui frame在 netbeans gui 框架中使用按钮
【发布时间】:2010-10-13 13:25:33
【问题描述】:

好的,所以我在 JAVA 方面很菜鸟,而且真的是一般的编程。我正在尝试制作一个使用 GUI 界面运行的石头、纸、剪刀应用程序。我正在尝试的是我想到的最简单的事情,按下一个按钮供您选择(r、p 或 s),这将在程序的其余部分中使用一个变量来与计算机的选择进行比较,找到获胜者等。我已经完成了程序,问题是 GUI 的东西。我正在使用 netbeans 和 JFrame,这对我来说是全新的。我有很多问题,也许有人可以链接到我那里有一个很好的教程,但是到目前为止,使用官方的 netbeans 站点并没有多大帮助。总之:

  1. 我不确定将我的 main 方法代码放在文本程序中的哪个位置,创建一个新类,或者将它放在我使用的框架的 main 方法中。

    李>
  2. 正因为如此,我什至无法编译的原因是主函数试图使用我想在按钮中创建的变量。我猜我不知道整个操作顺序。我查看了 netbeans 示例,我认为我可以通过做一些更复杂的事情来完成这项工作,但这似乎没有必要?

【问题讨论】:

    标签: java user-interface button jframe netbeans6.5


    【解决方案1】:

    这是一个很好的起点learning about Swing. 我会提醒你,如果你想快速创建一个大的 GUI,使用 NetBeans 非常棒,但如果你还不熟悉 Swing有效。

    我在项目中学到的一些技巧:

    • 在开始编写 GUI 之前考虑一下程序的底层模型是什么。例如,也许您会使用类似以下伪代码的游戏类:
    开始新游戏
       获得玩家的选择
       为计算机随机生成一个选项
       比较选择
          如果玩家的选择更强
             玩家获胜
          否则计算机获胜
       返回获胜者
    • 当您要构建 GUI 时,使用 Model-View-Controller 模式是一个不错的起点。这确保了程序的组件之间存在分离;如果您需要更改视图或模型,请不要破坏其他组件。

    • 这在实践中对于 Java 通常意味着您将视图和控制器包装在一起,通常像 qpingu 指出的那样扩展 JFrame。 JFrame 需要引用您的模型类和包含各种控件的面板。

    【讨论】:

      【解决方案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.
        }
        

        【讨论】:

          猜你喜欢
          • 2015-08-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-26
          • 1970-01-01
          相关资源
          最近更新 更多