2017-12-28 66 views
-1
public class AddMult extends JFrame { 
    public AddMult() { 
    setSize(600, 600); 

    txtEnterNum = new JTextField(); 
    txtEnterNum.setSize(100,50); 
    lblEnterNum.setLocation(100, 150); 
    add(txtEnterNum); 
    txtEnterNum.setVisible(true); 


    setVisible(true); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 

} フォームとJTextFieldを作成しようとしました。しかし、問題は、私の場所とサイズが機能しないということです。 TextFieldはフォーム全体を塗りつぶしています。どうすれば修正できますか?JTextFieldのサイズを変更できません

+0

以前存在していたtxtEnterNumを削除しましたか? –

+0

現在受け入れられている答えは、テキストフィールドのサイズと位置を決めるための完全な間違った方法です。私(そして他の多くの人)はあなたに正しいアドバイスを提供することができますが、最初に、GUI全体(他のコンポーネントやラベルなどと一緒に)が**表示される**と思われる方法を知る必要があります。 GUIの*意図された*レイアウトのASCIIアートや簡単な描画を最小サイズで提供し、さらに幅と高さを変更可能な場合は余分なスペースをどのように使用するかを示します。 –

+0

BTW 1)フォントサイズが大きい場合を除いて、高さ50は通常テキストフィールドよりもはるかに高くなります。 2) 'txtEnterNum'その名前の 'enter num'部分は、' SpinnerNumberModel'を持つ 'JSpinner'がより良いプログラミングアプローチであり、またユーザにとってより簡単かもしれないことを示唆しています。 –

答えて

-1

JFrameのデフォルトレイアウト(FlowLayout)のため、サイズが「動作していません」。このレイアウトでは、オブジェクトのサイズや場所を変更することはできません。

frame() { 

    setSize(600, 600); 
    setLayout(new LayoutManager() {...} 

    txtEnterNum = new JTextField(); 
    txtEnterNum.setSize(100, 50); 
    setLocation(100, 150); 
    add(txtEnterNum); 
    txtEnterNum.setVisible(true); 


    setVisible(true); 
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 
:あなたがたJFrameのコンストラクタでレイアウトを設定する必要が

setLayout(new LayoutManager() { 
     @Override 
     public void addLayoutComponent(String name, Component comp) { 



     } 

     @Override 
     public void removeLayoutComponent(Component comp) { 

     } 

     @Override 
     public Dimension preferredLayoutSize(Container parent) { 
      return null; 
     } 

     @Override 
     public Dimension minimumLayoutSize(Container parent) { 
      return null; 
     } 

     @Override 
     public void layoutContainer(Container parent) { 

     public void layoutContainer(Container parent) { 

      float modifierx = Toolkit.getDefaultToolkit().getScreenSize().width/100; 

      float Sizemodifier = Toolkit.getDefaultToolkit().getScreenSize().height/50; 

      float modifiery = Toolkit.getDefaultToolkit().getScreenSize().height/150; 

      int x=(int)(Toolkit.getDefaultToolkit().getScreenSize().width/modifierx); 

      int y=(int)(Toolkit.getDefaultToolkit().getScreenSize().height/modifiery); 

      int height =(int)(Toolkit.getDefaultToolkit().getScreenSize().height/Sizemodifier); 

      int DX =(int)(Toolkit.getDefaultToolkit().getScreenSize().width/modifierx); 

      int DY =(int)(Toolkit.getDefaultToolkit().getScreenSize().height/modifiery); 

      for(int i = 0; i<parent.getComponentCount();i++){ 

       if(i%2==0){ 

        parent.getComponent(i).setBounds(x,y,x,height); 

        x+= DX; 

       }else{ 

        parent.getComponent(i).setBounds(x,y,x,height); 

        x=Toolkit.getDefaultToolkit().getScreenSize().width/100; 

        y+=DY; 

       } 

      } 
     } 


    }); 

: 独自のレイアウトを使用してみてください(お使いのコンポーネントのサイズと位置を変更するために、xとyの値を変更します)

+0

編集では、「ヌル」レイアウトの既存の問題をすべて取り、それをカスタムレイアウトでラップする手法について概説しています。それは改善ではない。実際、それはちょうど悪いですが、初心者を物事をするより頑丈な方法だと考えるように欺くかもしれないとすれば、それは後退しています。このカスタムレイアウトマネージャは、最初のコメントの最初の文に記載されているすべての要素をどのように考慮して調整しますか? (Spoiler:そうではありません) –

+0

@AndrewThompson私は思ったようにコードを変更しました。これは今、各画面サイズに適応しています。それを確認してください、それを改善する方法があると思うなら、教えてください。 –

関連する問題