【问题标题】:Issue with objects in java?java中的对象有问题吗?
【发布时间】:2015-08-13 19:54:41
【问题描述】:

我正在制作一个根据用户输入是或否做出反应的窗口。我在这部分代码中遇到了问题:

public class Mywindow {

public static void main (String [] args){
    windowcontinued object = new windowcontinued();
    object.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //ISSUE HERE
    object.setSize(700, 1024); //ISSUE HERE
    object.setVisible(true); //ISSUE HERE
                                         }
                }

这些简单的操作应该确保程序在关闭时终止,具有一定的大小,并且是可见的。但出于某种原因,在所有三个操作中,我都收到错误消息:

 The method setDefaultCloseOperation(int) is undefined for the type windowcontinued

The method setSize(int, int) is undefined for the type windowcontinued

The method setVisible(boolean) is undefined for the type windowcontinued

虽然,所有这些都应该在导入后已经定义。完整代码如下:

主要代码:

package Myguipackage;

import javax.swing.JOptionPane;
import javax.swing.JFrame;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Mywindow {

public static void main (String [] args){
    windowcontinued object = new windowcontinued();
    object.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    object.setSize(700, 1024);
    object.setVisible(true);

                                         }
                }

其他类:

package Myguipackage;
import javax.swing.JOptionPane;
import javax.swing.JFrame;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class Windowcontinued{

public JLabel text;
public JTextField textfield;

public windowcontinued(){  //Constructor
/*  super("CHAT");
    setLayout(new FlowLayout());   */   

    text = new JLabel ("Would you like to talk to me?");
        text.add(text);

    textfield = new JTextField ("Yes or no? Erase this and type in your answer!");




                   }






 class hear implements ActionListener{



    public void actionPerformed(ActionEvent event){

        String string = "";

        if(event.getSource()==textfield)
            string = String.format("You typed in %s", event.getActionCommand());

         JOptionPane.showMessageDialog(null, string); //Open a new window that displays String string, which has changed based on which field you hit enter on.




                                                  }



                                         }


                        }

按照 fdsa 的建议使用 extends 关键字后,这里是新代码:

包Myguipackage;

import javax.swing.JFrame;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JLabel;
import javax.swing.JTextField;

public class mywindow extends JFrame{

public static void main (String [] args){
    windowcontinued object = new windowcontinued();
    object.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    object.setSize(700, 1024);
    object.setVisible(true);
                                         }
                }

Class windowcontinued 还是一样的。

【问题讨论】:

  • 您应该尽量尊重 Java 命名约定并且您的代码几乎不可读,您应该修复它。
  • 您在windowcontinued 代码中看到您调用的任何方法吗?你为什么希望他们在那里?
  • 这些是基于上面代码中的导入。
  • Windowcontinued 还是 windowcontinued?当您不发布实际代码时,您希望人们如何提供帮助?
  • 它声明“Class windowcontinued 仍然是一样的。”在帖子的前面,我已经发布了类窗口继续,最后部分是相同的代码,但带有扩展。这一切都写在帖子本身中

标签: java swing class user-interface


【解决方案1】:

正如其他发帖者所说,命名类时请遵循 java 命名约定。它使您的代码更易于理解。

您似乎对import 声明的目的感到困惑。导入对象时,只能在该类型的对象上使用其方法。如果您希望您的类模仿现有类的功能,您需要 extend 原始类,而不仅仅是 import 它。

【讨论】:

  • 你的意思是这样的: public class mywindow extends JFrame{ ,因为那也不起作用。非常感谢您提供反馈。
  • 是的,MyWindow 应该扩展 JFrame
  • 即使这样做了,这些错误仍然存​​在。我应该如何解决它们?
  • 请用您使用extends的代码更新问题
  • 好的——你应该扩展另一个类。虽然我感谢您为发布代码/解决此问题所做的努力,但我认为您不理解的概念太多,对我来说没有任何帮助。我建议您花点时间阅读docs.oracle.com/javase/tutorial/java/javaOO。在那之后,很多这将更有意义
猜你喜欢
  • 1970-01-01
  • 2012-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-24
  • 2015-03-06
相关资源
最近更新 更多