-2

Java コンパイラが次のエラー メッセージを返す

非静的メソッド getParameter(String) は静的コンテキストから参照できません

ライン上String Cliente4 = UtilMainApp.Cliente

私は次のクラスを持っています:UtilMainApp.java

package uk.co.mmscomputing.util;

import java.io.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.beans.*;
import javax.swing.*;

import uk.co.mmscomputing.util.log.LogBook;

abstract public class UtilMainApp extends JApplet{

  private Properties properties=new Properties();
  private File       propertiesFile;
  private JFrame     frame = null;

  public String Cliente = getParameter("id"); // I need use this variable


... etc...

ImageTab.java:

package uk.co.mmscomputing.application.imageviewer;

import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.awt.geom.*;
import java.awt.image.*;
import java.awt.print.*;
import java.io.*;
import java.util.*;                // as of 1.5.0 java.util has class Scanner
import javax.imageio.*;
import javax.imageio.stream.*;
import java.beans.*;
import java.net.URL;
import java.net.URLConnection;

import org.w3c.dom.*;
import javax.xml.parsers.*;
import javax.imageio.metadata.*;

import uk.co.mmscomputing.util.UtilMainApp;
import uk.co.mmscomputing.util.JarImageIcon;
//import uk.co.mmscomputing.imageio.*;
import uk.co.mmscomputing.image.operators.*;

public class ImageTab extends JPanel implements PropertyChangeListener{

  static public final String fileOpenID="uk.co.mmscomputing.file.open.dir";
  static public final String fileSaveID="uk.co.mmscomputing.file.save.dir";

  protected Properties   properties;
  protected JTabbedPane  images;
  protected JFileChooser openfc;
  protected JFileChooser savefc;


 ... etc...

    //UtilMainApp mc = new UtilMainApp(); //This is the part when I compile have an error
    String Cliente4 = UtilMainApp.Cliente;
    String Usuario;
    Usuario = Cliente4;
    JOptionPane.showMessageDialog(null, Usuario);

...etc...

これはどのように発生し、どうすれば解決できますか?

4

2 に答える 2

2

String Cliente4 = UtilMainApp.Cliente;

Cliente は のようですので、 ClassのオブジェクトにしてアクセスするNon-static Variable必要があります。 UtilMainApp

例えば:

UtilMainApp util = new UtilMainApp();

String Cliente4 = util.Cliente;
于 2012-09-24T16:06:22.930 に答える
1

エラーはここにあります。ここでは、非静的変数を静的な方法で参照しています。 UtilMainAppプロパティではなくクラスです。したがってCliente、そのように定義されていない場合、クラスごとに1つしかないかのように参照しています(静的)。

String Cliente4 = UtilMainApp.Cliente;

この問題を解決するにはUtilMainApp、クラスのコンストラクターにのインスタンスを渡す必要がありますImageTab。これにより、非静的プロパティを取得するために使用する参照が得られますClientegetProperty()また、このプロパティは、スーパー クラスでの非静的呼び出しによって初期化されるため、静的に設定できないことにも注意してください。

public String Cliente = getParameter("id"); // I need use this variable

もう 1 つ注意してください - すべてのプロパティに小文字で始まる名前を付けることをお勧めします。これは、クラス名とプロパティ名を混同しないようにするためです。この規則に従っていないため、コードを理解するのは非常に困難です。

于 2012-09-24T16:10:10.983 に答える