問題我在與單選按鈕的問題,並將它們添加到我的GUI佈局。我正嘗試將一組按鈕加載到我的面板「orderPanel」中,並將該組放置在說明標題和文本區域空間旁邊。我試圖將它放在名爲「probLabel」的標題下。與按鈕
public class AmhPhGui extends JFrame {
/* set up for GUI */
public AmhPhGui() throws ParseException {
// title bar text
super("Albert Huntermark Plumbing & Heating");
// corner exit button action
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// declare main panel
mainPanel = new JPanel();
// declare header panel
headerPanel = new JPanel();
// declare name panel
namePanel = new JPanel();
// declare input panel
infoPanel = new JPanel();
// declare order panel
orderPanel = new JPanel();
// declare button panel
buttonPanel = new JPanel();
// panel build manager
headerPanel();
custNamePanel();
custInfoPanel();
orderPanel();
buttonPanel();
// add panel to gui
this.add(mainPanel);
// add BagLayout manager to main panel
mainPanel.setLayout(new GridBagLayout());
// change background color
mainPanel.setBackground(Color.BLACK);
// declare GridBagConstaints vaariable
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);
// resize GUI to fit text
this.pack();
// display window
setVisible(true);
}
/* main method */
public static void main(String[] args) throws ParseException {
AmhPhGui customInfo = new AmhPhGui();
}
/* build header panel */
private void headerPanel() {
// set panel layout
headerPanel.setLayout(new GridLayout(1, 1));
// change background color
headerPanel.setBackground(Color.BLACK);
// declare header panel 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);
// declare fName label variable
fNameLabel = new JLabel("FIRST NAME:");
// set color of fName label text
fNameLabel.setForeground(Color.white);
// declare mName label variable
mNameLabel = new JLabel("MI (Not Required):");
// set color of mNameLabel text
mNameLabel.setForeground(Color.white);
// declare lName label variable
lNameLabel = new JLabel("LAST NAME:");
// set color of mNameLabel text
lNameLabel.setForeground(Color.white);
// declare text field for each name label
fNameTF = new JTextField(8);
mNameTF = new JTextField(1);
lNameTF = new JTextField(8);
// // 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() throws ParseException {
infoPanel.setLayout(new GridLayout(4, 2));
// change background color
infoPanel.setBackground(Color.BLACK);
// initialize addressLabel variable
addressLabel = new JLabel("ADDRESS:");
// set color of address label text
addressLabel.setForeground(Color.white);
// declare text field variable
addressTF = new JTextField(5);
// declare phone label variable
phoneLabel = new JLabel("PHONE NUMBER:");
// set color of phoneLabel text
phoneLabel.setForeground(Color.white);
// declare formatter variable
mf = new MaskFormatter("### - ### - ####");
// formatter does not
// allow invalid characters
mf.setAllowsInvalid(false);
// Declare JFormattedTextField &
// initialize format
phoneTF = new JFormattedTextField(mf);
// declare email label variable
emailLabel = new JLabel("EMAIL:");
// set color of emailLabel text
emailLabel.setForeground(Color.white);
// declare text field variable
emailTF = new JTextField(5);
// add components to panel
infoPanel.add(addressLabel);
infoPanel.add(addressTF);
infoPanel.add(phoneLabel);
infoPanel.add(phoneTF);
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);
// declare order label variable
probLabel = new JLabel("ORDER:");
// set color of prob label
probLabel.setForeground(Color.white);
// declare script label variable
scriptLabel = new JLabel("DESCRIPTION:");
// set color of script label
scriptLabel.setForeground(Color.white);
/*Something here*/
GroupButton();
// declare JTextArea variable
description = new JTextArea(3, 20);
description.setEditable(false);
// allow word wrap
description.setLineWrap(true);
// declare 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);
// declare JButton 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) {
// declare JTextPane variable
dialog = new JTextPane();
// declare and define 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.";
// declare and define 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.";
// declare 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() {
// declare 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);
// declare new ButtonGroup
ButtonGroup butgro = new ButtonGroup();
// add three buttons to ButtonGroup
butgro.add(rInstall);
butgro.add(rProject);
butgro.add(rMaintain);
}
}
我有一個預感,下面的文本沒有被正確使用。我相信整個按鈕組可能必須位於其自己的面板中。我不確定。
private void GroupButton() {
// declare 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);
// declare new ButtonGroup
ButtonGroup butgro = new ButtonGroup();
// add three buttons to ButtonGroup
butgro.add(rInstall);
butgro.add(rProject);
butgro.add(rMaintain);
}
反正想再去讀知道我怎麼可以把我組到信息面板(),或者我應該做單獨的面板爲每個peice的的信息面板中()?
注:請記住標記您正在使用或您的問題將會少看到的編程語言。 – Boann