私は、Javaで銀行アプリケーション用のGUIを作ろうとしています。私のフレームに絶対レイアウトを使用すると、EclipseでWindowBuilderを使用すると何かを作成するのはとても簡単ですが、フレームのサイズを変更すると問題が発生します。ですから、私は仕事を楽にするためにweightx/yを使うことができるところでgridBagLayoutを使うことにしました。私は、このレイアウトを適切に使用する方法を忘れていたので、私のgridBagLayoutメインパネルにJPanelを追加しようとしました。gridBagLayoutとabsoluteLayoutの比較
これは私が(絶対的なレイアウトで作られた)を達成したいものです。
そして、これは私が(GridBagLayoutの中で作られた)したものである:
誰か場合私が気に入るはずの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);
私はそれはそれを手動で行うよりもそんなに簡単かつ迅速で、視覚的なフォームデザイナを使用することをお勧めします。 eclipse、jformdesigner、netbeans、たくさんのオプションがあります。 – Robadob
私は自分の問題を解決しました。私はコメントしました /*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
@Chris:このコードでは、単純な関数を使ってコードを読みやすくすることができます。これは、指定されたコンテナにコンポーネントを追加し、この[例]のように 'Layout Manager'として' GridBagLayout'を持ちます(http: /stackoverflow.com/a/17919032/1057230) –