2017-06-30 5 views
0

は、私はこの方法作成しました:未定義のSwingコンポーネントのプロパティをメソッドに渡すには?

static void align (Object a, Object b, int c){ //this needs fix 
    if (c == 1){ 
     /* PLACED BELOW */ a.setLocation(b.getX()+((b.getWidth()- a.getWidth())/2) , b.getY()+b.getHeight()+10); 
    } 
    else if (c == 2){ 
     /* PLACED ABOVE */ a.setLocation(b.getX()+( (b.getWidth()- a.getWidth())/2) , b.getY()-a.getHeight()-10); 
    } 
    else if (c == 3){ 
     /* PLACED NEXT TO (LEFT) */ a.setLocation(b.getX()-a.getWidth() , b.getY()-((a.getHeight()-b.getHeight())/2)); 
    } 
    else if (c == 4){ 
     /* PLACED NEXT TO (RIGHT) */ a.setLocation(b.getX()+b.getWidth(), b.getY()-((a.getHeight()-b.getHeight())/2)); 
    } 
} 

私はそれがBに比較したいCに応じて、GUIコンポーネント(A)を取り、それを置くだろうが、私は得ることができません:X 、Y、幅、高さ、それを実現するために使用する他のすべて。

ディメンションとコンポーネントのポイントを私のメソッドに送信する新しいクラスを使用することを考えましたが、私が尋ねる前に不要なものを作成したくありません。

私のメソッドの中ではinstanceofを使用することも考えましたが、各guiコンポーネントのコードを作成する必要があるため、より簡単な方法があるはずです。

私の質問は、DimensionとPointを取得するために私のメソッドに送ることができるすべてのGUIコンポーネントのグローバルクラスのようですか?

そうでない場合、これを行う正しい方法は何でしょうか?

これは私の主である:

public static void main(String[] args) throws IOException { 

    int frame1w = 600; 
    int frame1h = 400; 

    JFrame frame1 = new JFrame("Foo"); 
    frame1.setSize(frame1w, frame1h); 
    frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

    JPanel contentPane = new JPanel(); 
    contentPane.setBackground(Color.WHITE); 
    contentPane.setLayout(null); 
    frame1.setContentPane(contentPane); 

    JButton button1 = new JButton("B"); 
    button1.setSize(button1.getPreferredSize()); 
    button1.setLocation(100, 150); 
    contentPane.add(button1); 

    JButton button2 = new JButton("A"); 
    button1.setSize(button1.getPreferredSize()); 
    contentPane.add(button1); 

    align(button2, button1 ,1); 
    frame1.setVisible(true); 
} 

注:私の例で私は2つのJButtonがを送って、どのような私もしたいことがちょうどJButtonのためではない、私は限り私が(欲しいものを送ることができるようにしたいですそれはGUIのように)JPanel、チェックボックス、または何か他のものを使用するようなものです。

+0

[継承の階層]は、[使用している要素のドキュメント](http://docs.oracle.com/javase/7/docs/api/javax/swing/JButton.html)で簡単に見つけることができます。 - あなたは['JComponent'](http://docs.oracle.com/javase/7/docs/api/javax/swing/JComponent.html)がほしいと思う。あなたの 'main'はコンパイルされません。そこに' a'と 'b'変数はありません。 – UnholySheep

+0

おっと、ええ、私の悪い、 –

+0

を編集させてください....すばやくエスカレートした、これは私が探していたものです... tnx FeelsBadMan –

答えて

1

変更してみてください:

static void align (Object a, Object b, int c) { //this needs fix 

に:

static void align (JComponent a, JComponent b, int c) { 

私はそれをテストしていませんが、あなたは、このようなJLabelJPanel、またはJButtonなどのコンポーネントを与えている場合は、それが動作するはずです。

+0

UnholySheepは同じ答えを返しました。これは私が探していたものです。両方ともu:D –

+0

@XaralabosNikolaidhs嬉しいです! – CodingNinja

関連する問題