Привет всем, я сейчас пытаюсь закончить задание для школы, но я застрял, и здесь нет никакого контента, который может напрямую касаться моей проблемы. Назначение - создать GUI-приложение, которое отображает общее количество для посещения клиента Джо. Некоторые из вас могут знать эту проблему из школы. https://bb1ap.tamut.edu/bbcswebdav/pid-281014-dt-content-rid-800291_1/courses/80706_15/week08_activity_25-27.pdf В нижней части прилагаемого pdf-файла проблема, с которой я столкнулся, и изображение того, как должен выглядеть готовый продукт. Кажется, я не могу создать две отдельные границы. Любая помощь с этим очень ценится. Если вы можете объяснить это, как будто я пятый класс еще лучше!Как использовать две титульные границы для окружения отдельных компонентов?
//Programmer: Davis Bentley
//Date: 10/21/2015
//Purpose: To allow user to calculate auto service cost
import javax.swing.*;
import java.awt.event.*;
public class autoCalc extends JFrame {
private JPanel topPanel;
private JPanel centerPanel;
private JLabel messageLabel1, messageLabel2;
private JTextField autoTextField1, autoTextField2;
private JButton calcButton, exitButton;
private final int WINDOW_WIDTH = 450;
private final int WINDOW_HEIGHT = 600;
JCheckBox oil = new JCheckBox("Oil Change ($26.00)");
JCheckBox lube = new JCheckBox("Lube Job ($18.00)");
JCheckBox radiator = new JCheckBox("Radiator FLush($30.00");
JCheckBox trans = new JCheckBox("Transmission FLush ($80.00)");
JCheckBox inspect = new JCheckBox("Inspection ($15.00)");
JCheckBox muffler = new JCheckBox("Muffler Replacement ($100.00)");
JCheckBox tire = new JCheckBox("Tire Rotation ($20.00)");
public autoCalc(){
super("Joe's Automotive");
setSize(WINDOW_WIDTH, WINDOW_HEIGHT);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
buildPanel();
setVisible(true);
}
private void buildPanel(){
JFrame frame = new JFrame("Joe's Automotive");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(topPanel);
frame.add(centerPanel);
topPanel = new JPanel();
topPanel.setBorder(BorderFactory.createTitledBorder("Routine Services"));
topPanel.add(oil);
topPanel.add(lube);
topPanel.add(radiator);
topPanel.add(trans);
topPanel.add(inspect);
topPanel.add(muffler);
topPanel.add(tire);
messageLabel1 = new JLabel("Parts charges:");
autoTextField1 = new JTextField(10);
messageLabel2 = new JLabel("Hours of Labor:");
autoTextField2 = new JTextField(10);
calcButton = new JButton("Calculate");
calcButton.addActionListener(new CalcButtonListener());
exitButton = new JButton("Exit");
exitButton.addActionListener(new exitButtonListener());
centerPanel = new JPanel();
centerPanel.setBorder(BorderFactory.createTitledBorder("Nonroutine Services"));
centerPanel.add(messageLabel1);
centerPanel.add(autoTextField1);
centerPanel.add(messageLabel2);
centerPanel.add(autoTextField2);
centerPanel.add(calcButton);
centerPanel.add(exitButton);
}
private class CalcButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e){
String input, input2;
double parts, hours, labor;
double grandTotal = 0;
if (oil.isSelected()){
grandTotal += 26;
}
if (lube.isSelected()){
grandTotal += 18;
}
if (radiator.isSelected()){
grandTotal += 30;
}
if (trans.isSelected()){
grandTotal += 80;
}
if (inspect.isSelected()){
grandTotal += 15;
}
if (muffler.isSelected()){
grandTotal += 100;
}
if (tire.isSelected()){
grandTotal += 20;
}
{
input = autoTextField1.getText();
parts = Double.parseDouble(input);
input2 = autoTextField2.getText();
hours = Double.parseDouble(input2);
labor = hours * 20;
grandTotal += parts + labor;
}
JOptionPane.showMessageDialog(null, "Total Charges: $" + grandTotal);
}
}
private class exitButtonListener implements ActionListener {
public void actionPerformed(ActionEvent e){
dispose();
}
}
}
Heres код, чтобы запустить его:
//Programmer: Davis Bentley
//Date: 10/21/2015
//Purpose: To allow user to calculate auto service cost
public class autoRun {
public static void main(String[] args) {
autoCalc auto = new autoCalc();
}
}
Эти командные строки работали, однако мне пришлось переместить их в конструктор и отбросить часть кадра. Единственная проблема, с которой я сейчас сталкиваюсь, - выстроить флажки с левой стороны? – Kar900
'Эти командные строки работали,' - тогда ответ должен быть «принят», нажав на галочку, чтобы люди знали, что проблема решена. «Единственная проблема, с которой я сейчас сталкиваюсь, - это выстроить флажки с левой стороны?» - вот почему я дал вам ссылку на учебное пособие по менеджерам макетов. Для получения желаемого макета вам нужно использовать другой менеджер компоновки (или комбинацию менеджеров макетов). Может быть, BoxLayout? Прочтите учебник, поиграйте с демо и решите, что лучше для вас. – camickr
Обнаружено, как использовать GridLayout. Теперь выложены флажки. Большое спасибо. – Kar900