【问题标题】:confusion in using global variables declared in one Class to another Class将一个类中声明的全局变量用于另一类的混淆
【发布时间】:2014-02-22 13:18:19
【问题描述】:

我有两个不同的 .java 文件。

  1. form.java 是一个获取用户详细信息的小程序
  2. EmbeddedNeo4j 用于在 Neo4j 中创建节点

我想使用包含我从 EmbeddedNeo4j 中的 form.java 检索到的值的变量。

我已经检索了这些值。我想知道如何在不同的 java 文件中使用它。

我的 form.java 文件是这个

import java.util.*;
import java.awt.*;
import javax.swing.*;
import java.applet.Applet;
import java.awt.event.*;
import java.awt.event.ActionEvent;
public class form extends JApplet implements ActionListener

{
  String Firstname,Lastname,Birthdate,Gender,State,City,HobbyS,EducationS,OccupationS;
  Object Hobby,Education,Occupation;
// instance variables - replace the example below with your own
String HobbyList[]={"Select ANY ONE","Cricket","Hockry","Golf","BasketBall","Football"};
String EducationList[]={"Select ANY ONE","BSc","BCom","BE","B.Tech","MBA","MBBS","PhD"};
String OccupationList[]={"Select ANY ONE","Business","Service","others"};
JPanel panel=new JPanel(new SpringLayout());
JLabel l1=new JLabel("First Name",JLabel.LEFT);
JTextField t1=new JTextField(50);
JLabel l2=new JLabel("Last Name",JLabel.LEFT);
JTextField t2=new JTextField(50);
JLabel l3=new JLabel("Birthday",JLabel.LEFT);
JTextField t3=new JTextField(20);
JRadioButton r1=new JRadioButton("Male");
JRadioButton r2=new JRadioButton("Female");
JLabel l4=new JLabel("State",JLabel.LEFT);
JTextField t4=new JTextField(50);
JLabel l5=new JLabel("City",JLabel.LEFT);
JTextField t5=new JTextField(50);
JLabel l6=new JLabel("Hobby",JLabel.LEFT);
JComboBox jl1=new JComboBox(HobbyList);
JLabel l7=new JLabel("Education",JLabel.LEFT);
JComboBox jl2=new JComboBox(EducationList);
JLabel l8=new JLabel("Occupation",JLabel.LEFT);
JComboBox jl3=new JComboBox(OccupationList);
 JLabel l9=new JLabel("THANK YOU" ,JLabel.LEFT);
JButton submit=new JButton("SUBMIT");


public void init()
{
    add(panel);
    panel.setLayout(new SpringLayout());
    panel.add(l1);
    panel.add(t1);
    panel.add(l2);
    panel.add(t2);
    panel.add(l3);
    panel.add(t3);
   // add(cpanel);
    panel.add(r1);
    panel.add(r2);       
    panel.add(l4);
    panel.add(t4);
    panel.add(l5);
    panel.add(t5);
    panel.add(l6);
    panel.add(jl1);
    panel.add(l7);
     panel.add(jl2);
    panel.add(l8);

    panel.add(jl3);
    panel.add(l9);
    panel.add(submit);


    /*panel.add(c1);
    panel.add(c2);
    panel.add(c3);
    panel.add(c4);*/
    /*panel.add(c2);*/
    Dimension d =new Dimension(20,20);

    l1.setLabelFor(t1);
    l2.setLabelFor(t2);
    t1.setPreferredSize(d);
    t1.setSize(d);
    t1.setMaximumSize(d);
   // t1.setMinimumSize(d);
    t2.setPreferredSize(d);
    t2.setSize(d);
    t2.setMaximumSize(d);

    t3.setPreferredSize(d);
    t3.setSize(d);
    t3.setMaximumSize(d);

    t4.setPreferredSize(d);
    t4.setSize(d);
    t4.setMaximumSize(d);

    t5.setPreferredSize(d);
    t5.setSize(d);
    t5.setMaximumSize(d);

    SpringUtilities.makeCompactGrid(panel,10,2,20,20,10,10);
    submit.addActionListener(this);
    // provide any initialisation necessary for your JApplet
}

 public void actionPerformed(ActionEvent ae)
    {
        Firstname=t1.getText();
       Lastname=t2.getText();
       Birthdate=t3.getText();
       if(r1.isSelected())
       {Gender=r1.getText();
        }
        else
        Gender=r2.getText();
        State=t4.getText();
        City=t5.getText();
        Hobby=jl1.getSelectedItem();
        Education=jl2.getSelectedItem();
        Occupation=jl3.getSelectedItem();
        HobbyS=Hobby.toString();
       EducationS=Education.toString();
        OccupationS=Occupation.toString();
        repaint();
        //System.out.println(Firstname)
    }
public void start()
{

}
public void stop()
{

}
public void paint(Graphics g)
{
   g.setColor(Color.red);

    super.paint(g);
  g.drawString(Firstname,10,560);
     g.drawString(Lastname,10,570);
     g.drawString(Birthdate,10,580);
      g.drawString(Gender,10,590);
       g.drawString(State,10,600);
        g.drawString(City,10,610);
        g.drawString(HobbyS,10,620);
         g.drawString(EducationS,10,630);
          g.drawString(OccupationS,10,640);   
}
public void destroy()
{
    // provide code to be run when JApplet is about to be destroyed.
}


}

我想在 EmbeddedNeo4j 中使用字符串 Firstname,Lastname,Birthdate,Gender,State,City,HobbyS,EducationS,OccupationS 有什么建议吗?

【问题讨论】:

  • 我不知道从哪里开始,除了指出 Java 没有任何类型的全局变量,而且让整个 Java 程序直接扩展 JApplet 通常是糟糕的设计。也许您应该创建一个数据对象Person,您可以使用它来移动信息。
  • 能否详细介绍一下数据对象部分?
  • 在开始 GUI 编程之前,请先完成基本的命令行 Java 教程。您需要涵盖许多基本问题。
  • 1) 为什么要编写小程序?如果是由于规范。老师请发给Why CS teachers should stop teaching Java applets。 2) 对代码块使用一致且符合逻辑的缩进。代码的缩进是为了帮助人们理解程序流程。 3)同意@chrylis,你应该从更简单的事情开始。小程序的开发和部署比想象的要困难得多。请参阅第一条评论中的博客文章了解我的看法。

标签: java applet


【解决方案1】:

您可能想为要访问的每个字段创建一个公共 getter 方法:

public String getFirstname() {
    return Firstname;
}

public String getLastname() {
    return Lastname;
}

我还建议您将字段命名为小写,即:firstname, lastname ...

正如@chrylis 所说,将所有这些相关字段封装在一个类中也很棒。

【讨论】:

    【解决方案2】:

    在Java中,如果要复制所有数据,则没有全局变量的概念,只需制作一个Person bean类例如:

    public class Person{
    
    private String fname;
    private String mname;
    private String lname;
    public String getfname() {
        return fname;
    }
    
    public String setfname() {
        return fname;
    }
    //Other getters()&setters();
    }
    

    然后你可以在 form 类中使用 getter 和 setter 定义一个 Pesron 类。

    如果你想使用像全局变量这样的 java 类,你可以将 Person 类定义为另一个类中的静态变量,如下所示

    Public class Globals{
    Public static Person FakeGlobalvariablePerson=null;
    }
    

    它可以通过调用Globals.FakeGlobalvariablePerson 像全局变量一样使用,但请记住这不是编码的好方法

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 2011-06-22
      相关资源
      最近更新 更多