2012-03-12 7 views
1

私はフレームにラベルを貼り付けましたが、移動を拒否します。 SetBounds()は動作していません。引数が0、1、または2でない "Result"よりも過去にある場合、不正な位置合わせエラーが発生します。ここで私はラベルを宣言しています:Java AWTでの不適切な配置エラー。私のラベルを移動させることができません

ラベル結果=新しいラベル( "結果。"、3);

ここSetBoundsの文です:

result.setBounds(0、1500、100、20);

私が書いているこのプログラムでは、ユーザーに2つの数字を入力して追加し、GUIコンポーネントを使用して結果を印刷したいだけです。結果は変更を拒否するラベルです。プログラム全体のコードは以下の通りですが、プログラムはまだ実行されていませんが、コンパイルした場合、結果は常に左に詰まり、TextFieldと同じレベルにします。この問題は実際には他のラベル、Help1、Help2で発生しています。私はスイングを使わなければならないと教えてください!私はスイングが嫌いです。

まだイベントをユーザー入力を追加する場所に変更する必要があります。以前の番組のイベントをコピーしました。

コード:(コメントはありません申し訳ありませんが、それは巨大なプログラムはありません)3は、コンストラクタ内のパラメータ「アライメント」のために許可された値ではないため、エラーがある

import java.awt.*; 
import java.awt.event.*; 

public class MouseClick { 
    TextField number1; 
    TextField number2; 

    public static void main(String[] args) { 
     MouseClick MC = new MouseClick(); 
    } 

    public MouseClick() { 
     Frame f = new Frame("Addition Time!"); 
     Button button = new Button("Click Here To Add The Two Numbers."); 
     button.setBounds(175, 250, 230, 30); 
     button.addMouseListener(new MyMouseListener()); 
     f.add(button); 
     Label help1 = new Label("Enter the first number below."); 
     Label help2 = new Label("Enter the second number below."); 
     Label exprsn1 = new Label("+", 0); 
     Label exprsn2 = new Label("=", 0); 
     Label result = new Label("Result.", 3); 
     number1 = new TextField("TextField1", 100); 
     number2 = new TextField("TextField2", 100); 
     help1.setBounds(50, 80, 150, 20); 
     help2.setBounds(250, 80, 150, 20); 
     exprsn1.setBounds(00, 80, 30, 30); 
     exprsn2.setBounds(00, 80, 30, 30); 
     number1.setBounds(50, 100, 100, 20); 
     number2.setBounds(250, 100, 100, 20); 
     result.setBounds(0, 1500, 100, 20); 
     f.add(number1); 
     f.add(number2); 
     f.add(help1); 
     f.add(help2); 
     f.add(result); 
     f.addWindowListener(new WindowAdapter() { 
      public void windowClosing(WindowEvent we) { 
       System.exit(0); 
      } 
     }); 
     f.setSize(600, 300); 
     f.setVisible(true); 
    } 

    public class MyMouseListener extends MouseAdapter { 
     public void mouseClicked(MouseEvent me) { 
      String S = number1.getText(); 
      number2.setText(S); 
     } 
    } 
} 
+1

ただし、絶対レイアウトと純粋なAWTを使用する具体的な理由はありますか?この例は、レイアウトマネージャであるSwing +のほうがずっと簡単です。 – Adam

+0

*「私はスイングを使わなければならないと言わないでください!私はスイングが嫌いです」*ネイティブPLAFを試しましたか?(この回答の最後の3枚のスクリーンショットに見られるように)(http://stackoverflow.com/questions/5621338/about-swing-and-jtable/5630271#5630271)BTW - 誰もスイングやレイアウトを使用する必要はありませんが、助けを受ける機会があれば助かります。 –

答えて

2

Label(String text, int alignment) 

同様のコンストラクタを持つTextField()と混同していますか?あなたが明示的にnullのレイアウトを使用して、指定されていませんでしたので、

TextField(String text, int columns) 

ラベルが正しい位置に表示されない理由があります。

public MouseClick() { 
    Frame f = new Frame("Addition Time!"); 
    f.setLayout(null); // add this line 
+0

私はそれを知っていました。私のラベルを特定の位置に設定するメソッドが見つかりません.1と2の間に何かが必要ですが、互換性のないエラーが発生します。 – user1264450

+0

setLayout(null)が必要です。結果はsetBounds()になりました。回答が更新されました。 – Adam

+0

これはうまくいきました。ありがとうございました。あまりにもあなたに投票できません。 – user1264450

関連する問題