2016-10-19 14 views
1

私は入力から結果をフェッチするために、小さなプログラムをjavaで構築しました。私のメインからJFrameメソッドを呼び出せません

これはコンソールで動作しますが、今はスイングJFramesを使用しているため、GUIを使用したいと考えています。

それは私が立ち往生しているところです。フォームを表示して、メインコードからフォームを作成することができます。 しかし、私は単純なセッターとゲッターを使ってこのフォームを自由に操作したいと思います。

フォームパネルの値を変更するための設定をしましたが、メインコードはそのメソッドを認識しません。

私はGUIに慣れていないので、私はスイングを使う正しいロジックが欠けていると賭けていますが、もし誰かが私が作っている重大な間違いを見つけるのに十分親切な人であれば、

NB:ここでは、私のメインコードを直接利便性のクラスに入れましたが、私はメインと同じクラスから自分のGUIクラスを分離しようとしました。結果。

public class mainform { 

public JPanel panel1; 
private JLabel output; 

public void setRes() 
{ 
    output.setText("hello"); 
} 


public static void main(String[] args) throws IOException { 
    JFrame frame = new JFrame("mainform"); 
    frame.setContentPane(new mainform().panel1); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.pack(); 
    frame.setVisible(true); 

    frame.setRes(); // HERE IS WHERE "setRes" won't be recognized as a method... 

} 

} 
+2

自問してみてください。どのクラスが 'frame'で、どのクラスが' setRes'メソッドに属していますか? – flakes

+0

JFrameがあなたの新しいクラス 'mainform'にどういう関係があるのでしょうか? –

答えて

2

フレームは、のJFrameと宣言しました。コンパイラは割り当ての右側を気にしません。

コンパイラの場合、フレームはJFrameです。そして、JFramesにはその方法がありません。したがって、変数のタイプをメインフォームに変更する必要があります。そしてもちろん、MainFormというのJFrameを作るために、あなたはに持ってクラスのフレームを作る:

class mainform extends JFrame 

ほか:Javaの命名規則を参考にしてみてください。クラス名は常にUpperCaseになりますので、おそらく "TestFrame"がここでもっと良い名前になります。また、メソッド名の略語も避けてください。そして、 "setRes()"は何も言わない。あなたはそれを "placeTextOnPanel"か何か同じように呼ぶ方がいいでしょう。

+1

この時点で 'mainframe'が' JFrame'から継承するべきことを追加しました。 (また、命名規則に従うために 'Mainframe'をピースします)。 – SomeJavaGuy

+0

@KevinEsche Correct。ヒントありがとう! – GhostCat

2

のJFrameクラスには、そのようなメソッドが存在しないので、あなたはframe.asetRes() を呼び出すことはできません....()メソッドsetResを持っていません。

代わりに、メインフォームクラスのインスタンスが必要です。

0

ありがとうございました! そんなルーキーなミステイクは、私のメインフォームクラスをJFrameに拡張しませんでした。

以下は実際にコンパイルされますが、ラベルのテキストは変更されません。何故ですか ?

(また、そう命名規則のため申し訳ありませんが、それは実際に適切な命名と実際のGUIをコーディングする前に、偽のプロジェクトにフィドルビットをジュストする私のinterntionました。)

<!-- language: java -->  

public class mainform extends JFrame { 


public JPanel panel1; 
private JLabel output; 



public void setRes() 
{ 
    output.setText("hello"); 
} 


public static void main(String[] args) throws IOException { 
    mainform frame = new mainform(); 
    frame.setContentPane(new mainform().panel1); 
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    frame.pack(); 
    frame.setVisible(true); 


    frame.setRes(); 

} 

} 
関連する問題