0

JFrame の特定の座標に Jbutton を配置したいと考えています。setLocation と setBounds を使用してみましたが、どちらも機能しません。私は確かに何か間違ったことをしていると思います。私はJavaが初めてで、これを検索しようとしました

私の出力:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class BingoHelper extends JFrame implements WindowListener, ActionListener{
    JTextField text = new JTextField(10);

    private JButton b; {
            b = new JButton("Click to enter name");
            }

    public void actionPerformed (ActionEvent e) {
        String fn = JOptionPane.showInputDialog("Username:");
        String sn = JOptionPane.showInputDialog("Password:");
        JOptionPane.showMessageDialog(null, "Welcome " + fn + " " + sn + ".", "", JOptionPane.INFORMATION_MESSAGE);
        text.setText(fn + " " + sn);
        b.setVisible(false);
        text.setVisible(true);
        text.setBounds(100,20,49,90);
        b.setBounds(100,90,22,30);
    } 

    public BingoHelper(){
        super("BINGO");
        setLayout(new FlowLayout());
        add(b);
        add(text);
        text.setVisible(false);
        b.setVisible(true);
        b.setBounds(0,0,220,30);
        b.addActionListener(this);
    }

    public void windowClosing(WindowEvent e) {
        dispose();
        System.exit(0);

    }
    public void windowOpened(WindowEvent e) {}
    public void windowActivated(WindowEvent e) {}
    public void windowIconified(WindowEvent e) {}
    public void windowDeiconified(WindowEvent e) {}
    public void windowDeactivated(WindowEvent e) {}
    public void windowClosed(WindowEvent e) {}
}
4

2 に答える 2

2

ほとんどの場合、UI 要素を座標で配置する理由はありません。レイアウトマネージャーを実際にチェックする必要があります。あなたは扱いたくないワームの缶を開けています。たとえば、ユーザーが画面のサイズを変更しようとすると、問題が発生する可能性があります。

代わりにこのドキュメントをチェックしてください: http://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html

GridBagLayoutは非常に扱いにくく、使用するのが面倒ですが、達成しようとしているほぼすべてのものに対応できる十分な柔軟性を備えている必要があります。ただし、他のレイアウト マネージャーも調べる必要があります。それらの 1 つまたは複数を組み合わせて使用​​して、目的のルック アンド フィールを実現できる場合があります。

そうは言っても、私は Java の組み込みのレイアウト マネージャーが嫌いです。それらがどのように機能するかを感じたら、間違いなくサードパーティのレイアウト システムに移行する必要があります。MIGLayoutはかなりボスです。

于 2013-10-08T17:39:41.497 に答える
1

コンポーネントの配置を担当するオブジェクトはLayout Managerです。ただし、自分で座標を指定する場合は、コンポーネントを配置する場所にnull レイアウトを指定する必要があります。Container

コードでは、フレームのコンテンツ ペイン (a Container)のレイアウトを に設定しますFlowLayoutが、null: に設定する必要がありますsetLayout(null);。次に、JButton で setBounds を使用してその場所を指定できます。

ただし、Layout Manager を使用することを強くお勧めします (おそらくJPanels を使用しているものがいくつかあります)。

編集:なぜこれほど多くの異なるレイアウトがあるのか​​を垣間見るには、レイアウト マネージャーのビジュアル ガイドをご覧ください。

于 2013-10-08T17:42:21.033 に答える