2013-07-31 2 views
5

私は、Javaで銀行アプリケーション用のGUIを作ろうとしています。私のフレームに絶対レイアウトを使用すると、EclipseでWindowBuilderを使用すると何かを作成するのはとても簡単ですが、フレームのサイズを変更すると問題が発生します。ですから、私は仕事を楽にするためにweightx/yを使うことができるところでgridBagLayoutを使うことにしました。私は、このレイアウトを適切に使用する方法を忘れていたので、私のgridBagLayoutメインパネルにJPanelを追加しようとしました。gridBagLayoutとabsoluteLayoutの比較

これは私が(絶対的なレイアウトで作られた)を達成したいものです。

enter image description here

そして、これは私が(GridBagLayoutの中で作られた)したものである:

enter image description here

誰か場合私が気に入るはずのflowLayoutパネルを最初に追加するときに、変更/追加しなければならないことを私に指摘することができます。基本的に最初のセルの空白 - 私はそれを取り除き、それを制御したい!

ここ

はいくつかのコードです:

setBackground(new Color(255, 255, 255)); 
    GridBagLayout gridBagLayout = new GridBagLayout(); 
    gridBagLayout.columnWidths = new int[]{0, 0}; 
    gridBagLayout.rowHeights = new int[]{0, 0}; 
    gridBagLayout.columnWeights = new double[]{1.0, Double.MIN_VALUE}; 
    gridBagLayout.rowWeights = new double[]{1.0, Double.MIN_VALUE}; 
    setLayout(gridBagLayout); 

    JPanel panel = new JPanel(); 
    FlowLayout flowLayout = (FlowLayout) panel.getLayout(); 
    flowLayout.setVgap(15); 
    flowLayout.setHgap(15); 
    flowLayout.setAlignment(FlowLayout.LEFT); 
    panel.setBackground(new Color(51, 102, 204)); 
    GridBagConstraints gbc_panel = new GridBagConstraints(); 
    gbc_panel.anchor = GridBagConstraints.NORTH; 
    gbc_panel.fill = GridBagConstraints.HORIZONTAL; 
    gbc_panel.gridx = 0; 
    gbc_panel.gridy = 0; 
    add(panel, gbc_panel); 

    JLabel label = new JLabel("European Bank"); 
    label.setForeground(Color.WHITE); 
    label.setFont(new Font("Tahoma", Font.PLAIN, 25)); 
    panel.add(label); 

    JLabel lblYourBankAccounts = new JLabel("Your Bank Accounts"); 
    lblYourBankAccounts.setForeground(new Color(153, 153, 153)); 
    lblYourBankAccounts.setFont(new Font("Tahoma", Font.PLAIN, 19)); 
    GridBagConstraints gbc_label = new GridBagConstraints(); 
    gbc_label.insets = new Insets(0, 60, 0, 0); 
    gbc_label.anchor = GridBagConstraints.LINE_START; 
    gbc_label.gridx = 0; 
    gbc_label.gridy = 1; 
    add(lblYourBankAccounts, gbc_label); 

    JScrollPane scrollPane = new JScrollPane(); 
    GridBagConstraints gbc_scrollPane = new GridBagConstraints(); 
    gbc_scrollPane.insets = new Insets(10, 60, 10, 10); 
    gbc_scrollPane.weightx = 1.0; 
    gbc_scrollPane.weighty = 1.0; 
    gbc_scrollPane.gridx = 0; 
    gbc_scrollPane.gridy = 2; 
    gbc_scrollPane.fill = GridBagConstraints.BOTH; 
    add(scrollPane, gbc_scrollPane); 
+3

私はそれはそれを手動で行うよりもそんなに簡単かつ迅速で、視覚的なフォームデザイナを使用することをお勧めします。 eclipse、jformdesigner、netbeans、たくさんのオプションがあります。 – Robadob

+0

私は自分の問題を解決しました。私はコメントしました /*gridBagLayout.columnWidths = new int [] {0、0}; \t \t gridBagLayout.rowHeights = new int [] {0、0}; \t \t gridBagLayout.columnWeights = new double [] {1.0、Double.MIN_VALUE}; \t \t gridBagLayout.rowWeights = new double [] {1.0、Double.MIN_VALUE}; */ 私はEclipseでWindowBuilderアドオンを使用しています。このコードの実際の50%が生成されます。多分私はなぜ私がその空白を持っていたのか理解できなかったのです。 – Chris

+2

@Chris:このコードでは、単純な関数を使ってコードを読みやすくすることができます。これは、指定されたコンテナにコンポーネントを追加し、この[例]のように 'Layout Manager'として' GridBagLayout'を持ちます(http: /stackoverflow.com/a/17919032/1057230) –

答えて

1

私はNetbeansのにレイアウトカスタマイザーに建てられたお勧めします。 それから学ぶのは簡単です。それが役に立てば幸い。

問題のタイプについて、コンポーネントの重みを調整してみましょう。ここで

はそれを行うにはどのようにスクリーンショットです:http://goo.gl/TBPY9i

関連する問題