【发布时间】:2018-09-26 15:04:41
【问题描述】:
我正在使用 Java GUI 创建一个 GPA 计算器。当点击“添加课程”按钮时,程序应该每次都为课程名称、学分和成绩添加一个文本字段。
我使用 HTML 和 Javascript 制作了同样的程序,这里是 https://nsuer.club/cgpa-calculator/
看截图:
我应该使用List 来存储文本字段吗?这是我在 Java GUI 上的第一个项目。
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
CgpaCalculator window = new CgpaCalculator();
window.frmCgpaCalculator.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the application.
*/
public CgpaCalculator() {
initialize();
}
/**
* Initialize the contents of the frame.
*/
private void initialize() {
frmCgpaCalculator = new JFrame();
frmCgpaCalculator.getContentPane().setFont(new Font("Tahoma", Font.PLAIN, 17));
frmCgpaCalculator.setTitle("CGPA Calculator");
frmCgpaCalculator.setBounds(100, 100, 540, 683);
frmCgpaCalculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frmCgpaCalculator.getContentPane().setLayout(null);
textField = new JTextField();
textField.setBounds(12, 140, 126, 29);
frmCgpaCalculator.getContentPane().add(textField);
textField.setColumns(10);
textField_1 = new JTextField();
textField_1.setBounds(12, 175, 126, 29);
frmCgpaCalculator.getContentPane().add(textField_1);
textField_1.setColumns(10);
textField_2 = new JTextField();
textField_2.setBounds(12, 210, 126, 29);
frmCgpaCalculator.getContentPane().add(textField_2);
textField_2.setColumns(10);
textField_3 = new JTextField();
textField_3.setBounds(12, 245, 126, 29);
frmCgpaCalculator.getContentPane().add(textField_3);
textField_3.setColumns(10);
JLabel lblGrade = new JLabel("Course");
lblGrade.setFont(new Font("Tahoma", Font.PLAIN, 15));
lblGrade.setBounds(47, 99, 56, 16);
frmCgpaCalculator.getContentPane().add(lblGrade);
JComboBox comboBox = new JComboBox();
comboBox.setToolTipText("0");
comboBox.setModel(new DefaultComboBoxModel(new String[] {"3", "1", "2", "0", "1.5"}));
comboBox.setBounds(181, 140, 75, 29);
frmCgpaCalculator.getContentPane().add(comboBox);
JLabel lblCredits = new JLabel("Credits");
lblCredits.setFont(new Font("Tahoma", Font.PLAIN, 15));
lblCredits.setBounds(192, 99, 56, 16);
frmCgpaCalculator.getContentPane().add(lblCredits);
JComboBox comboBox_4 = new JComboBox();
comboBox_4.setModel(new DefaultComboBoxModel(new String[] {"A", "A-", "B+", "B", "B", "B-", "C+", "C", "D+", "D", "F"}));
comboBox_4.setBounds(297, 140, 70, 29);
frmCgpaCalculator.getContentPane().add(comboBox_4);
JComboBox comboBox_5 = new JComboBox();
comboBox_5.setModel(new DefaultComboBoxModel(new String[] {"A", "A-", "B+", "B", "B", "B-", "C+", "C", "D+", "D", "F"}));
comboBox_5.setBounds(297, 175, 70, 29);
frmCgpaCalculator.getContentPane().add(comboBox_5);
JComboBox comboBox_6 = new JComboBox();
comboBox_6.setModel(new DefaultComboBoxModel(new String[] {"A", "A-", "B+", "B", "B", "B-", "C+", "C", "D+", "D", "F"}));
comboBox_6.setBounds(297, 210, 70, 29);
frmCgpaCalculator.getContentPane().add(comboBox_6);
JComboBox comboBox_7 = new JComboBox();
comboBox_7.setModel(new DefaultComboBoxModel(new String[] {"A", "A-", "B+", "B", "B", "B-", "C+", "C", "D+", "D", "F"}));
comboBox_7.setBounds(297, 245, 70, 29);
frmCgpaCalculator.getContentPane().add(comboBox_7);
JComboBox comboBox_1 = new JComboBox();
comboBox_1.setModel(new DefaultComboBoxModel(new String[] {"3", "1", "2", "0", "1.5"}));
comboBox_1.setToolTipText("0");
comboBox_1.setBounds(181, 175, 75, 29);
frmCgpaCalculator.getContentPane().add(comboBox_1);
JComboBox comboBox_2 = new JComboBox();
comboBox_2.setModel(new DefaultComboBoxModel(new String[] {"3", "1", "2", "0", "1.5"}));
comboBox_2.setToolTipText("0");
comboBox_2.setBounds(181, 210, 75, 29);
frmCgpaCalculator.getContentPane().add(comboBox_2);
JComboBox comboBox_3 = new JComboBox();
comboBox_3.setModel(new DefaultComboBoxModel(new String[] {"3", "1", "2", "0", "1.5"}));
comboBox_3.setToolTipText("0");
comboBox_3.setBounds(181, 245, 75, 29);
frmCgpaCalculator.getContentPane().add(comboBox_3);
JLabel lblGrade_1 = new JLabel("Grade");
lblGrade_1.setFont(new Font("Tahoma", Font.PLAIN, 15));
lblGrade_1.setBounds(311, 99, 56, 16);
frmCgpaCalculator.getContentPane().add(lblGrade_1);
JButton btnNewButton = new JButton("Add Course");
btnNewButton.setFont(new Font("Tahoma", Font.PLAIN, 15));
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
JOptionPane.showMessageDialog(frmCgpaCalculator.getComponent(0), "Hello World");
}
});
JLabel lblCgpa = new JLabel("CGPA:");
lblCgpa.setFont(new Font("Tahoma", Font.BOLD, 17));
lblCgpa.setBounds(386, 13, 56, 16);
frmCgpaCalculator.getContentPane().add(lblCgpa);
JLabel label = new JLabel("0.0");
label.setFont(new Font("Tahoma", Font.PLAIN, 17));
label.setBounds(454, 13, 56, 16);
frmCgpaCalculator.getContentPane().add(label);
btnNewButton.setBounds(12, 299, 124, 25);
frmCgpaCalculator.getContentPane().add(btnNewButton);
JButton btnCalculate = new JButton("Calculate");
btnCalculate.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
label.setText("3.2");
}
});
btnCalculate.setFont(new Font("Tahoma", Font.PLAIN, 15));
btnCalculate.setBounds(270, 300, 97, 25);
frmCgpaCalculator.getContentPane().add(btnCalculate);
}
更新:
如果不需要,我添加了一个按钮来删除一行。如何连接到数组列表索引?
JButton btnX = new JButton("");
btnX.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
btnX.setIcon(new ImageIcon(CgpaCalculator.class.getResource("/com/sun/javafx/scene/control/skin/modena/dialog-error.png")));
btnX.setBackground(Color.RED);
btnX.setForeground(Color.WHITE);
btnX.setBounds(428, rowY, 30, 30);
frmCgpaCalculator.getContentPane().add(btnX);
【问题讨论】:
标签: java swing user-interface awt