gpt4 book ai didi

java - 在对话框中对齐复选框

转载 作者:行者123 更新时间:2023-11-30 04:34:35 26 4
gpt4 key购买 nike

我想根据其他相应字段对齐复选框(红色突出显示区域)。

enter image description here

这是我用来生成它的主要方法

public class DialogTesting extends JFrame{

public static void main(String args[])
{

JFrame frame = new JFrame();
frame.setSize(320,250);
frame.setLocation(400,400);

JTextField txtUserName,txtHostName,txtPortNo,txtSID;
JPasswordField txtPassword;
JPanel mainPanel;
JCheckBox chkBoxSaveConnection;

mainPanel = new JPanel();
mainPanel.setBorder(BorderFactory.createEmptyBorder());
mainPanel.setPreferredSize(new Dimension(300, 210));
mainPanel.setLayout(new FlowLayout());


JLabel l_label = null;
txtUserName = new JTextField("K_USERNAME", 15);
txtUserName.putClientProperty("maxlength", 200);
l_label = new JLabel("User Name");
l_label.setPreferredSize(new Dimension(100, 30));
mainPanel.add(l_label);
mainPanel.add(txtUserName);

txtPassword = new JPasswordField("K_PASSWORD", 15);
txtUserName.putClientProperty("maxlength", 200);
l_label = new JLabel("Password");
l_label.setPreferredSize(new Dimension(100, 30));
mainPanel.add(l_label);
mainPanel.add(txtPassword);

txtHostName = new JTextField("K_HOSTNAME", 15);
txtHostName.putClientProperty("maxlength", 200);
l_label = new JLabel("Host Name");
l_label.setPreferredSize(new Dimension(100, 30));
mainPanel.add(l_label);
mainPanel.add(txtHostName);

txtPortNo = new JTextField("K_PORTNO", 15);

l_label = new JLabel("Port Number");
l_label.setPreferredSize(new Dimension(100, 30));
txtPortNo.putClientProperty("maxlength", 200);
mainPanel.add(l_label);
mainPanel.add(txtPortNo);


txtSID = new JTextField("K_SID", 15);
l_label = new JLabel("SID number");
l_label.setPreferredSize(new Dimension(100, 30));
txtPortNo.putClientProperty("maxlength", 200);
mainPanel.add(l_label);
mainPanel.add(txtSID);

chkBoxSaveConnection = new JCheckBox();
l_label = new JLabel("chkBoxSaveConnection");
l_label.setPreferredSize(new Dimension(150, 30));
mainPanel.add(l_label);
mainPanel.add(chkBoxSaveConnection);

mainPanel.setVisible(true);

frame.add(mainPanel);
frame.setVisible(true);

}
}

这里我想让复选框(红色突出显示区域)根据其他字段对齐

我尝试了这个解决方案以使其正确对齐

mainPanel.setLayout(new GridLayout()); 
GridBagConstraints l_bag_constraints = new GridBagConstraints();
l_bag_constraints.fill = GridBagConstraints.HORIZONTAL;
mainPanel.add(jlabel,FieldMapperHelper.getGridBagCompPosition(l_bag_constraints,0,0,10,1,0,10)
);
mainPanel.add(txtUserName
,FieldMapperHelper.getGridBagCompPosition(l_bag_constraints,0,1,10,1,0,10)
);

但在这种情况下,它向我显示非常小的文本框。

除此之外,如果您还想要其他东西,请告诉我。

最佳答案

好吧,所以你的问题是你没有使用合适的布局管理器,并且你还被迫设置首选尺寸(你不应该这样做)。

这是代码的更新版本,它使用 GridBagLayout 并且应该可以很好地工作:

Result image

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;

public class DialogTesting {

protected void initUI() {

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JTextField txtUserName, txtHostName, txtPortNo, txtSID;
JPasswordField txtPassword;
JPanel mainPanel;
JCheckBox chkBoxSaveConnection;

GridBagConstraints firstCol = new GridBagConstraints();
firstCol.weightx = 1.0;
firstCol.anchor = GridBagConstraints.WEST;
firstCol.insets = new Insets(5, 20, 5, 5);

GridBagConstraints lastCol = new GridBagConstraints();
lastCol.gridwidth = GridBagConstraints.REMAINDER;
lastCol.weightx = 1.0;
lastCol.fill = GridBagConstraints.HORIZONTAL;
lastCol.insets = new Insets(5, 5, 5, 20);

mainPanel = new JPanel(new GridBagLayout());

JLabel l_label = null;
txtUserName = new JTextField("K_USERNAME", 15);
txtUserName.putClientProperty("maxlength", 200);
l_label = new JLabel("User Name");
mainPanel.add(l_label, firstCol);
mainPanel.add(txtUserName, lastCol);

txtPassword = new JPasswordField("K_PASSWORD", 15);
txtUserName.putClientProperty("maxlength", 200);
l_label = new JLabel("Password");
mainPanel.add(l_label, firstCol);
mainPanel.add(txtPassword, lastCol);

txtHostName = new JTextField("K_HOSTNAME", 15);
txtHostName.putClientProperty("maxlength", 200);
l_label = new JLabel("Host Name");
mainPanel.add(l_label, firstCol);
mainPanel.add(txtHostName, lastCol);

txtPortNo = new JTextField("K_PORTNO", 15);

l_label = new JLabel("Port Number");
txtPortNo.putClientProperty("maxlength", 200);
mainPanel.add(l_label, firstCol);
mainPanel.add(txtPortNo, lastCol);

txtSID = new JTextField("K_SID", 15);
l_label = new JLabel("SID number");
txtPortNo.putClientProperty("maxlength", 200);
mainPanel.add(l_label, firstCol);
mainPanel.add(txtSID, lastCol);

chkBoxSaveConnection = new JCheckBox();
l_label = new JLabel("chkBoxSaveConnection");
mainPanel.add(l_label, firstCol);
mainPanel.add(chkBoxSaveConnection, lastCol);

frame.add(mainPanel);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}

public static void main(String args[]) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new DialogTesting().initUI();
}
});
}
}

关于java - 在对话框中对齐复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13802213/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com