現在、Swing を使用したアプリケーションの GUI を設計しています。写真を見ると、BorderLayout 内に配置された黄色の JPanel が表示されます。このパネルは GridBagLayout を使用して、コンポーネントを内部に配置します。ご覧のとおり、コンポーネントの 1 つの行は、ラベル、テキスト フィールド、およびボタンで構成されています。現時点では、垂直方向の中央に 2 列のコンポーネントがあります。パネルの上から配置したいのですが。プロパティframe.setAlignmentY(TOP_ALIGNMENT)
と同様に設定を試みましたが、結果はありませんでした。gridBagConstraints.anchor
この問題に対する私のアプローチは間違っていると思います。何時間も苦労する代わりに、stackoverflow の善良な人々に頼っています。
問題は、コンポーネントのグリッドを強制的に垂直方向に中央揃えではなく上部に配置する方法です。私を正しい方向に向けるアドバイスをありがとう。
編集(コード):
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
/**
*
* @author mt
*/
public class MainView extends JFrame {
public MainView() {
setPreferredSize(new Dimension(500, 500));
getContentPane().setLayout(new BorderLayout());
JPanel panel = new JPanel(new GridBagLayout());
panel.setBackground(Color.YELLOW);
GridBagConstraints c = new GridBagConstraints();
c.insets = new Insets(4, 4, 4, 4);
c.gridx = 0;
c.gridy = 0;
panel.add(new JLabel("PokerStars"), c);
c.gridx = 1;
c.gridy = 0;
panel.add(new JTextField(20), c);
c.gridx = 2;
c.gridy = 0;
panel.add(new JButton("btn"), c);
c.gridx = 0;
c.gridy = 1;
panel.add(new JLabel("Full Tilt Poker"), c);
c.gridx = 1;
c.gridy = 1;
panel.add(new JTextField(20), c);
c.gridx = 2;
c.gridy = 1;
panel.add(new JButton("btn"), c);
add(panel, BorderLayout.LINE_START);
pack();
setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new MainView();
}
});
}
}