- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 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);
看起来像:
我还建议您检查不同的LayoutManager
's ,将来您可以将它们组合起来,而不是使用一个(GridLayout
)。
关于java - GridLayout 中的 JTextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20365237/
//java swing 新手,需要帮助获取第一个 Jtextfield 中的文本以显示在//第二个 jtextfield 中???我很年轻,刚刚开始接触java,需要一些帮助。下面是我已经完成的代码
我正在制作一个用户界面,其中有两个 jtextfields。我想要的是当用户输入第一个jtextfield 它应该以 1 的增量镜像在第二个 jtextfield 中,并且如果用户在第二个 Jtext
我正在设计许可证激活部分。它在 Java Swing 中有两个文本字段。 Java代码: jTextField1.setDocument(new JTextFieldLimit(8)); jTex
我需要将文本从 JFrame 中的 JTextField 传递到另一个 JFrame 中的第二个 JTextField。 GUI 是使用 GUI Editor netbeans 6.9 创建的。 最佳
在从另一个 JTextField 读取一个 String 后,在另一个类中更新一个 JTextField 时遇到一些问题。这是有问题的方法: public JTextField buyVowel(pl
我正在制作身份验证 GUI,它应该包含 2 个文本字段,用户名 JTextField 和密码 JPasswordField。我想让密码字段位于用户名字段下方。我目前的代码如下: public clas
当鼠标在该文本字段中单击时,我需要让该程序清除文本字段中的文本。我尝试了一些方法,但还没有一个对我有用。 完整代码如下: public class TimerClassPanel extends JF
我目前正在学习如何在 Java 中使用 Swing。将 JTextFields、JLabels 或 JButtons 添加到 JPanel 时,我通常用 4 行来完成,如下所示: gbc.gridx
我不确定之前是否已经回答过这个问题;我尝试搜索看看是否有,但没有成功。 我正在做一项家庭作业,并且必须有两个 JTextField:一个接受输入,第二个反转显示给定的输入。例如,如果有人输入 1234
如何将内容从一个 JTextField 逐个字符复制到另一个不可编辑的 JTextField? 第一个 JTextField 中输入的每个字符都应动态显示在第二个 JTextField 中。 最佳答案
我想找到jtextfields(sht1到sht13)的总和并将结果放入llog jtextfield中,但如果我不在每个jtextfield(sht1到sht13)中放入值,它就不起作用 我如何修复
如何验证文本字段在 Swing 中仅输入 10 位数字的手机号码? 我有三个文本字段。 姓名 联系方式 没有。对于电子邮件 我想点击提交按钮,然后检查姓名、联系方式和电子邮件是否正确。我还想设置字符限
我已将 JPopupMenu 添加到 JTextField。不幸的是,当我从 JTextField 更改焦点时,或者当我“最小化”窗口时,JPopupMenu 仍然可见。如果 JTextField 失
我的 JTextField 遇到问题。我不知道如何将变量从 JTextField (位于 JFrame A 中)传递到另一个 JTextField (位于 JFrame B 中)。我尝试这样做,但它没
我正在用java创建一个小程序,用户在四个不同的四个不同文本字段中输入一些数据,单击一个按钮,然后从这些字段中获取数据并将其存储在旁边的文本字段中。 我制作了一个按钮,它实现了 ActionListe
以下是多文件项目的部分代码。我只发布这段代码,因为我不清楚为什么 setText 方法不起作用。并未包含此项目的所有代码。 import javax.swing.*;
大家好,我有一个连接到 Oracle 数据库的 Swing 应用程序,我希望一旦我在 JTextField 中键入一个值,JFrame 上的其他 JTextfield 就会加载来自数据库的后续数据,但
我有一个名为 Name 的 JTextField 和一个名为 Address 的 JTextArea。我的要求是,当用户在 JTextField 中输入名称并按 Enter 键时,光标应转到下一个文本
在 Netbeans 中,每当 JTextField、JButton 获得焦点时,边框就会被蓝色突出显示覆盖,我如何更改其颜色或完全删除它? 最佳答案 您可以通过右键单击设计 View 中的组件,选择
double B=Double.parseDouble(emp_txt2.getText()); double C=Double.parseDouble(nopay_txt3.getText(
我是一名优秀的程序员,十分优秀!