Назначение - добавить код для создания GUI, который позволяет пользователю заказывать пиццу и выбирать начинки. Я застрял на позиционировании кнопок расчета и выхода, которые должны go ниже JTextField
.
Я также пытаюсь выяснить, как уменьшить внутреннее заполнение на панели JCheckBox
, так как, похоже, GUI может потребоваться и для этого.
import java.awt.*;
import javax.swing.*;
public class PizzaOrderFrame extends JFrame {
JRadioButton smallRadioButton, mediumRadioButton, largeRadioButton;
JCheckBox sausageCheckBox, pepperoniCheckBox, salamiCheckBox,
olivesCheckBox, mushroomsCheckBox, anchoviesCheckBox;
JTextField priceTextField;
JButton calculateButton, exitButton;
PizzaOrderFrame() {
initComponents();
}
private void initComponents() {
setTitle("Pizza Calculator");
setLocationByPlatform(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
smallRadioButton = new JRadioButton("Small");
mediumRadioButton = new JRadioButton("Medium");
largeRadioButton = new JRadioButton("Large");
ButtonGroup sizeGroup = new ButtonGroup();
sizeGroup.add(smallRadioButton);
sizeGroup.add(mediumRadioButton);
sizeGroup.add(largeRadioButton);
JPanel buttonPanel = new JPanel();
buttonPanel.setBorder(BorderFactory.createTitledBorder("Size"));
buttonPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
buttonPanel.add(smallRadioButton);
buttonPanel.add(mediumRadioButton);
buttonPanel.add(largeRadioButton);
sausageCheckBox = new JCheckBox("Sausage");
pepperoniCheckBox = new JCheckBox("Pepperoni");
salamiCheckBox = new JCheckBox("Salami");
olivesCheckBox = new JCheckBox("Olives");
mushroomsCheckBox = new JCheckBox("Mushrooms");
anchoviesCheckBox = new JCheckBox("Anchovies");
JPanel chkBoxPanel = new JPanel();
chkBoxPanel.setBorder(BorderFactory.createTitledBorder("Toppings"));
chkBoxPanel.setLayout(new GridBagLayout());
chkBoxPanel.add(sausageCheckBox, getConstraints(0, 0));
chkBoxPanel.add(olivesCheckBox, getConstraints(1, 0));
chkBoxPanel.add(pepperoniCheckBox, getConstraints(0, 1));
chkBoxPanel.add(salamiCheckBox, getConstraints(0, 2));
chkBoxPanel.add(mushroomsCheckBox, getConstraints(1, 1));
chkBoxPanel.add(anchoviesCheckBox, getConstraints(1, 2));
priceTextField = new JTextField(10);
priceTextField.setEnabled(false);
JPanel pricePanel = new JPanel();
pricePanel.setLayout(new FlowLayout(FlowLayout.LEFT));
pricePanel.add(new JLabel("Price"));
pricePanel.add(priceTextField);
calculateButton = new JButton("Calculate");
exitButton = new JButton("Exit");
ButtonGroup bottomButtons = new ButtonGroup();
bottomButtons.add(calculateButton);
bottomButtons.add(exitButton);
JPanel buttonPanel2 = new JPanel();
buttonPanel2.setLayout(new FlowLayout(FlowLayout.LEFT));
buttonPanel2.add(calculateButton);
buttonPanel2.add(exitButton);
add(buttonPanel, BorderLayout.NORTH);
add(chkBoxPanel, BorderLayout.WEST);
add(pricePanel, BorderLayout.SOUTH);
add(buttonPanel2, BorderLayout.EAST);
setSize(270, 280);
}
// helper method for getting a GridBagConstraints object
private GridBagConstraints getConstraints(int x, int y) {
GridBagConstraints c = new GridBagConstraints();
c.anchor = GridBagConstraints.LINE_START;
c.insets = new Insets(5, 5, 0, 5);
c.gridx = x;
c.gridy = y;
c.ipadx = 0;
c.ipady = 0;
return c;
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(() -> {
PizzaOrderFrame frame = new PizzaOrderFrame();
frame.setVisible(true);
});
}
}