0

いくつかのラベルと txtAreas を使用して小さな GUI を作成しようとしています。絶対配置でやりましたが、グリッドバッグレイアウトで行きたいです。過去 3 日間から試していますが、これらのラベルを必要な位置として取得できませんでした。真ん中で立ち往生しているか、境界近くで立ち往生しています。これらの位置にそれらを取得するのを手伝ってください。

public void initUIPanel() {

    jf = new JFrame();
    jf.setTitle("Mortgage Calculator");
    jf.setLocation(100,200);
    jf.setSize(400,500);
    jf.setVisible (true);
    //jf.setResizable(false);



JPanel panel = new JPanel();
GridBagLayout gbl = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();
gbc.anchor = GridBagConstraints.NORTHWEST;

loanAmount = new JTextField(15);
gbc.gridx = 0;
gbc.gridy = 0;
gbl.setConstraints(loanAmount, gbc);
panel.add(loanAmount);


loanTerm = new JTextField(15);
gbc.gridx = 0;
gbc.gridy = 0;
gbl.setConstraints(loanTerm, gbc);
panel.add(loanTerm);


amount = new JLabel("Loan Amount");
gbc.gridx = 0;
gbc.gridy = 0;
gbl.setConstraints(amount, gbc);
panel.add(amount);


term= new JLabel("Loan Term");
gbc.gridx = 0;
gbc.gridy = 0;
gbl.setConstraints(term, gbc);
panel.add(term);


currency = new JLabel ("AUD");
gbc.gridx = 0;
gbc.gridy = 0;
gbl.setConstraints(currency, gbc);
panel.add(currency);


numOfYear = new JLabel ("Year");
gbc.gridx = 0;
gbc.gridy = 0;
gbl.setConstraints(numOfYear, gbc);
panel.add(numOfYear);


JPanel middlePanel = new JPanel ();

middlePanel.setBorder ( new TitledBorder ( new EtchedBorder (), "Display Area" ) ); 
txtResult = new JTextArea();
gbc.gridx = 0;
gbc.gridy = 0;
gbl.setConstraints(txtResult, gbc);
panel.add(txtResult);


jf.add(panel,"Center");
//panel.setBounds(200,200,200,20);
jf.setVisible(true);

}

2行ですべてを与えています。すべてめちゃくちゃ。私が欲しいのは

First Line: Loan Amount: ............(txt Area).... "AUD"
Second LIne: Loan Term: .............(Txt Area......Years

次に、Txtbox

ありがとうございました

4

1 に答える 1

0

パネルのレイアウトを設定していません:

panel.setLayout(gbl);

そして、コメントですでに述べたように、すべてのコンポーネントが同じ gridx と gridy を持っていますが、これは明らかに正しくありません。

私が正しく理解していれば、あなたが望むことを行う完全な例を次に示します。

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

public class GblTest extends JFrame {

    public GblTest() {
        add(createPanel(), BorderLayout.NORTH);
    }

    private JPanel createPanel() {
        JPanel p = new JPanel();
        p.setLayout(new GridBagLayout());

        GridBagConstraints c = new GridBagConstraints();
        c.gridx = 0;
        c.gridy = 0;
        c.anchor = GridBagConstraints.BASELINE_LEADING;
        p.add(new JLabel("Loan amount"), c);

        c.gridx++;
        p.add(new JTextField(15), c);

        c.gridx++;
        c.fill = GridBagConstraints.HORIZONTAL;
        c.weightx = 1.0;
        p.add(new JLabel("AUD"), c);

        c.gridx = 0;
        c.gridy++;
        c.fill = GridBagConstraints.NONE;
        c.weightx = 0.0;
        p.add(new JLabel("Loan term"), c);

        c.gridx++;
        p.add(new JTextField(15), c);

        c.gridx++;
        c.fill = GridBagConstraints.HORIZONTAL;
        c.weightx = 1.0;
        p.add(new JLabel("Years"), c);

        return p;
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                GblTest test = new GblTest();
                test.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                test.pack();
                test.setVisible(true);
            }
        });
    }
}
于 2013-06-01T16:12:43.760 に答える