gpt4 book ai didi

java - GridLayout 中的 JTextField

转载 作者:行者123 更新时间:2023-12-01 13:46:07 25 4
gpt4 key购买 nike

我的 gui 中的文本字段占用了 custNamePanel() 中的整个网格部分,我遇到了问题。我想知道如何解决这个问题。我的信息面板似乎与正常大小的 JTextField 没什么问题。

public class CustomInfo extends JFrame {

/* set up for GUI */

public CustomInfo() {
// title bar text
super("Albert Huntermark Plumbing & Heating");
// corner exit button action
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// create main panel
mainPanel = new JPanel();
// create header panel
headerPanel = new JPanel();
// create name panel
namePanel = new JPanel();
// create input panel
infoPanel = new JPanel();
// create order panel
orderPanel = new JPanel();
// create button panel
buttonPanel = new JPanel();
// panel build manager
headerPanel();
custNamePanel();
custInfoPanel();
orderPanel();
buttonPanel();
// add GridLayout manager to main panel
mainPanel.setLayout(new GridLayout(5, 1));
// add panel to gui
this.add(mainPanel);
mainPanel.add(headerPanel);
mainPanel.add(namePanel);
mainPanel.add(infoPanel);
mainPanel.add(orderPanel);
mainPanel.add(buttonPanel);
// resize GUI to fit text
this.pack();
// display window
setVisible(true);
}


/* main method */

public static void main(String[] args) {
CustomInfo customInfo = new CustomInfo();
}


/* build header panel */

private void headerPanel() {
// set panel layout
headerPanel.setLayout(new GridLayout(1, 1));

// change background color
headerPanel.setBackground(Color.BLACK);

// initialize variable
headerLabel = new JLabel("Please Provide the Following");

// set color of headerLabel
headerLabel.setForeground(Color.white);

// add component to panel
headerPanel.add(headerLabel, BorderLayout.CENTER);
}


/*
*
*/

private void custNamePanel() {
// set panel layout
namePanel.setLayout(new GridLayout(1, 6));

// change background color
namePanel.setBackground(Color.BLACK);

// initialize label variable
fNameLabel = new JLabel("FIRST NAME:");

// set color of fNameLabel text
fNameLabel.setForeground(Color.white);

// initialize label variable
mNameLabel = new JLabel("MI (Not Required):");

// set color of mNameLabel text
mNameLabel.setForeground(Color.white);

// initialize label variable
lNameLabel = new JLabel("LAST NAME:");

// set color of mNameLabel text
lNameLabel.setForeground(Color.white);

// create text field for each name label
fNameTF = new JTextField(10);
mNameTF = new JTextField(1);
lNameTF = new JTextField(10);

// // add components to panel
namePanel.add(fNameLabel);
namePanel.add(fNameTF);
namePanel.add(mNameLabel);
namePanel.add(mNameTF);
namePanel.add(lNameLabel);
namePanel.add(lNameTF);
}


/* build input panel */

private void custInfoPanel() {
infoPanel.setLayout(new GridLayout(4, 2));

// change background color
infoPanel.setBackground(Color.BLACK);

// initialize variable
phoneLabel = new JLabel("PHONE #:");

// set color of phoneLabel text
phoneLabel.setForeground(Color.white);

//
phoneTF = new JTextField(5);

// initialize address label variable
addressLabel = new JLabel("Address:");

// set color of addressLabel text
addressLabel.setForeground(Color.white);

//
addressTF = new JTextField(5);

// initialize email label variable
emailLabel = new JLabel("EMAIL:");

// set color of emailLabel text
emailLabel.setForeground(Color.white);

//
emailTF = new JTextField(5);

// add components to panel
infoPanel.add(phoneLabel);
infoPanel.add(phoneTF);
infoPanel.add(addressLabel);
infoPanel.add(addressTF);
infoPanel.add(emailLabel);
infoPanel.add(emailTF);
}


/* build order panel */

private void orderPanel() {
orderPanel.setLayout(new GridLayout(2, 2));

// change background color of panel
orderPanel.setBackground(Color.BLACK);

// initialize order label variable
probLabel = new JLabel("Order:");

// set color of probLabel
probLabel.setForeground(Color.white);

// initialize variable

// initialize variable
scriptLabel = new JLabel("Description:");

// set color of scriptLabel
scriptLabel.setForeground(Color.white);

/*Something here*/
GroupButton();

// initialize text area variable
description = new JTextArea(3, 20);
description.setEditable(false);

// allow word wrap
description.setLineWrap(true);

// initialize scroll pane variable
vert_scroll = new JScrollPane(description);

// specify scroll pane function
vert_scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);

// add components to panel
orderPanel.add(probLabel);
orderPanel.add(scriptLabel);
orderPanel.add(vert_scroll);
}


/* build button panel */

private void buttonPanel() {
// change background color
buttonPanel.setBackground(Color.BLACK);

// initialize variable
submitButton = new JButton("Submit Order");

// add ActionListener
submitButton.addActionListener(new SubmitButtonListener());

// add components to panel
buttonPanel.add(submitButton);
}


/* build action listener
* for button panel */

private class SubmitButtonListener implements ActionListener
{
public void actionPerformed(ActionEvent e) {
// create JTextPane variable
dialog = new JTextPane();

// create string variable for confirmation
String msg = "Thank You for using \nThe Albert"
+ " Huntermark Pulmbing & Heating Application. \nYou will"
+ " recieve a Confirmation Email shortly with the \nnext"
+ " available appointment.";

// create String variable for error
String error = "We're Sorry\nthe information below is either invalid"
+ " or insufficient.\nPlease look over your information and"
+ " try again.";

// create email variable
String EMAIL_REGEX = "^[\\w-_\\.+]*[\\w-_\\.]\\@([\\w]+\\.)+[\\w]"
+ "+[\\w]$";

// format JTextPane
StyledDocument doc = dialog.getStyledDocument();
SimpleAttributeSet center = new SimpleAttributeSet();
StyleConstants.setAlignment(center, StyleConstants.ALIGN_CENTER);
doc.setParagraphAttributes(0, doc.getLength(), center, false);

// boolean variable for email format verification
if(emailTF.getText().matches(EMAIL_REGEX))
{
// set JTextPane content
dialog.setText(msg);

// clear text fields
fNameTF.setText("");
mNameTF.setText("");
lNameTF.setText("");
phoneTF.setText("");
emailTF.setText("");
description.setText("");
}
else
dialog.setText(error);

// display dialog message
JOptionPane.showMessageDialog(null, dialog);
}
}


/* method for JRadioButton
* creation */

private void GroupButton()
{
// create 3 JRadioButton variables
JRadioButton rInstall = new JRadioButton("Installation");
JRadioButton rProject = new JRadioButton("Project");
JRadioButton rMaintain = new JRadioButton("Maintenance");
this.add(rInstall);
this.add(rProject);
this.add(rMaintain);

// create new ButtonGroup
ButtonGroup butgro = new ButtonGroup();

// add three buttons to ButtonGroup
butgro.add(rInstall);
butgro.add(rProject);
butgro.add(rMaintain);
}
}

最佳答案

您具有这种效果,因为您使用 GridLayout 它将组件的大小调整为网格的所有单元格。

尝试为您的mainPanel使用另一个LayoutManager,例如GridBagLayout ,使用它您可以管理容器中组件的大小调整,尝试使用下一个代码将添加代码更改为 mainPanel ,它可以帮助您:

this.add(mainPanel);
mainPanel.setLayout(new GridBagLayout());
mainPanel.setBackground(Color.BLACK);
GridBagConstraints c = new GridBagConstraints();
c.fill = GridBagConstraints.HORIZONTAL;
c.weightx = 1;
c.insets = new Insets(5, 5, 5, 5);
c.gridy = 1;
mainPanel.add(headerPanel,c);
c.gridy++;
mainPanel.add(namePanel,c);
c.gridy++;
mainPanel.add(infoPanel,c);
c.gridy++;
mainPanel.add(orderPanel,c);
c.gridy++;
mainPanel.add(buttonPanel,c);

看起来像:

enter image description here

我还建议您检查不同的LayoutManager's ,将来您可以将它们组合起来,而不是使用一个(GridLayout)。

关于java - GridLayout 中的 JTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20365237/

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