Java を使用して mySQL データベースと対話するクライアント/サーバー アプリケーションを作成しようとしています。現時点では、アプリケーションの機能については心配していません。今気になっているのはレイアウトです。GUI の外観を何時間も構築しようとしてきましたが、結果はまちまちでした。GridBagLayout は非常に柔軟で、一般的に使用されている GUI であることを認識しています。これは私が使用してきたものです。列を表す複数の垂直ボックスと行を表す水平ボックスを作成してみましたが、うまくいきましたが、最終的には必要な結果が得られませんでした。
より具体的には、私の主な問題は、以下のコードで、「SQLコマンドを入力してください」列を左のテキストフィールドボックス列に並べようとすると、必要に応じて右に「浮かびません」ということです代わりに、その下にあるすべてのコンポーネントを移動し、配置を台無しにします。
私が間違っていること、および以下のような GUI を実現する方法について、誰かが私を導くのを手伝ってくれれば、非常にありがたいです。
これまでの私のJavaコード:
public class Methods extends JFrame{
private final JTextField item1 = new JTextField(40);
private final JTextField item2 = new JTextField(40);
private final JTextField item3 = new JTextField(40);
private final JTextField item4 = new JTextField(40);
private final JTextArea item5 = new JTextArea(6,30);
private JLabel label = new JLabel("Enter Database Information");
private JLabel label1 = new JLabel("JDBC Driver");
private JLabel label2 = new JLabel("Database URL");
private JLabel label3 = new JLabel("Username");
private JLabel label4 = new JLabel("Password");
private JLabel label5 = new JLabel("Enter a SQL Command");
private JLabel label6 = new JLabel("No Connection Now");
private JLabel label7 = new JLabel("SQL Execution Result");
private final JButton button1 = new JButton("Connect");
private final JButton button2 = new JButton("Execute SQL Command");
private final JButton button3 = new JButton("Clear Command");
private final JButton button4 = new JButton("Clear Results");
private final JPanel jp;
public Methods(){
super("SQL Client GUI - MHZ");
item1.setText("JDBC Driver");
item2.setText("Datbase URL");
item3.setText("Username");
item4.setText("Password");
//GUI Gridlayout Layout
jp = new JPanel();
jp.setLayout(new GridBagLayout());
GridBagConstraints grid = new GridBagConstraints();
grid.anchor = GridBagConstraints.BASELINE_TRAILING;
grid.gridx=0;
grid.gridy=0;
//column1
jp.add(label1, grid);
grid.gridy++;
jp.add(label2, grid);
grid.gridy++;
jp.add(label3, grid);
grid.gridy++;
jp.add(label4, grid);
grid.gridy=0;
grid.gridx++;
//col2
jp.add(item1, grid);
grid.gridy++;
jp.add(item2, grid);
grid.gridy++;
jp.add(item3, grid);
grid.gridy++;
jp.add(item4, grid);
grid.gridy=0;
grid.gridx++;
//col3
jp.add(label5, grid);
grid.gridy++;
jp.add(item5, grid);
grid.gridy++;
grid.gridx=0;
grid.gridy=4;
jp.add(button1,grid);
grid.gridx++;
jp.add(button2, grid);
grid.gridx++;
jp.add(button3, grid);
grid.gridx++;
jp.add(button4, grid);
add(jp);
}
}
下の画像は、その本来の姿です。