私のプログラムを書いているうちに、別のクラスからメソッドsetTextArea()を呼び出そうとしたときに、シンボルメッセージを見つけることができませんでした。ここでgui.setTextAreaシンボルエラーメッセージが見つかりません
が私のコードです:
:public class LinkExtractor {
public static void main(String[] args) throws IOException {
//Validate.isTrue(args.length == 1, "usage: supply url to fetch");
String base = "http://uk.ask.com/web?q=";
String keyword ="flowers";
String tale="&search=&qsrc=0&o=312&l=dir";
String url =base+keyword+tale;
print("Fetching %s...", url);
Document doc = Jsoup.connect(url).get();
Elements links = doc.select("a[href]");
print("\nLinks: (%d)", links.size());
for (Element link : links) {
print(" * a: <%s> (%s)", link.attr("abs:href"), trim(link.text(), 35));
AssistantGUI gui=new AssistantGUI();
}
}
public static void print(String msg, Object... args) {
***//here is the problem line***
gui.setTextArea(String.format(msg, args));
}
private static String trim(String s, int width) {
if (s.length() > width)
return s.substring(0, width-1) + ".";
else
return s;
}
}
そして、ここでは私の第二のクラスである - 誤っSYMタイプ 互換性のないソースコード:プログラムをコンパイルした後、私は次のエラーメッセージを取得しています
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextArea;
public class AssistantGUI {
JFrame frame= new JFrame("TextArea frame");
JPanel panel=new JPanel();
JTextArea text= new JTextArea("",5,20);
public AssistantGUI(){
frame.add(panel);
panel.add(text);
frame.setSize(250,200);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void setTextArea(String myString){
text.append(myString);
}
public static void main(String[] args){
AssistantGUI gui= new AssistantGUI();
gui.setTextArea("Hello");
}
}
同様の問題で多くの投稿を読みましたが、解決策が見つかりませんでした。すべて私にはうまく見えます。私はAssistantGUIのインスタンスを作成しているし、それを認識しない理由setTextArea()メソッドを呼び出すために使用していますか?何か案は?私は本当にあなたの助けに感謝します。
これを動作させるには、静的にguiを宣言する必要があります。しかし、私はそれをお勧めしません。 staticは非常に注意して使用しなければなりませんし、しばしば人々が間違って使用することがあります(ここにあるように)。最終的には、すべてを静的にする必要があり、問題が発生します。 –
はい、あなたは正しいです、我々は静的な参照を持っている必要があります..他の賢明な私たちはメインのような静的メソッドからその参照を使用することはできません... –