我在使用 Java 時遇到問題GridLayout。首先,我使用網格布局簡單地將兩個JLabel組件與其對應的JTextField控制元件放在一起,但我發現的問題是標簽和 textField 之間的空間太大,我不知道如何更正它。
JPanel panel2 = new JPanel ();
estableceBorde(panel2, "Info Jinete y Caballo ");
GridLayout panel21;
panel21 = new GridLayout(2,2);
panel21.setHgap(0);
panel21.setVgap(10);
panel2.setLayout(panel21);
panel2.add(jinete);
panel2.add(jinetet);
panel2.add(caballo);
panel2.add(caballot);
這是 JLabel 和 JTextField 之間的間距捕獲,我的意思是:

uj5u.com熱心網友回復:
GridLayout 的問題是所有網格框的大小必須完全相同,如果這是您想要的布局,例如當您想要創建棋盤時,這很好,但是如果您需要更靈活的布局,這不是那么好網格。我自己,我會使用不同的布局,例如 GridBagLayout,它可以為您的定位和間隙提供更大的靈活性。例如:

import java.awt.*;
import javax.swing.*;
public class Foo001 {
public static void main(String[] args) {
JPanel panel2 = new JPanel (new GridBagLayout());
GridBagConstraints gbc = createGbc(0, 0);
panel2.add(new JLabel("Jinete"), createGbc(0, 0));
panel2.add(new JTextField(15), createGbc(1, 0));
panel2.add(new JLabel("Caballo"), createGbc(0, 1));
panel2.add(new JTextField(15), createGbc(1, 1));
panel2.setBorder(BorderFactory.createTitledBorder("Info Jinete y Caballo"));
// Show the JPanel for demonstration purposes
JOptionPane.showMessageDialog(null, panel2);
}
private static GridBagConstraints createGbc(int x, int y) {
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = x;
gbc.gridy = y;
gbc.fill = GridBagConstraints.HORIZONTAL;
int gap = 3;
gbc.insets = new Insets(gap, gap 2 * gap * x, gap, gap);
return gbc;
}
}
這段代碼的關鍵以及使用 GridBagLayout 的難點在于正確設定 GridBagConstraints,這是我經常使用實用方法來做的事情,這里createGbc(...)。gridx 和 gridy 設定很明顯,因為這是相對于彼此放置組件的位置。插圖是組件周圍的間隙,我給了 JTextFields 一個更大的左插圖,以將它們與相應的 JLabels 分開:`
new Insets(gap, gap 2 * gap * x, gap, gap);
當 x 為 0(在第一列時)時,左邊的 padgap 2 * gap * x為gapsize(此處為 3),gap當 x 為 1 時為x 3。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/385137.html
下一篇:我在JFrame中看不到任何東西
