【发布时间】:2016-07-18 16:44:55
【问题描述】:
我真的很难将这段代码组装在一起。最终的计划是我有两个输入字段,一个要求名称,一个要求标记。然后我会输入一个名称和一个标记,按下按钮后程序会将这些值输入到一个表格中,通过总和将为该标记分配一个等级(A、B、C 等);最后,当输入所有值时,用户将按下另一个按钮,该按钮将在文本文件中打印出姓名和相应等级的列表。这就是结局。
目前我真的很难创建表格并将其放置在框架的下部,以便每次按下一个按钮时它都会更新。我的框架的下部是“myBottomPanel”。如果您能给我建议并可能在我完成游戏的过程中帮助我,我将不胜感激。
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
public class GradePanel2 extends JPanel {
private JButton addEntry, calculate;
private JLabel name, grade, nameResult, gradeResult;
private JTextField nameField, gradeField;
public GradePanel2() {
// Button to add entry to list
addEntry = new JButton("Add entry to list");
addEntry.addActionListener(new buttonListener());
// Button to print all entries in correct format
calculate = new JButton("Print all user grades");
calculate.addActionListener(new buttonListener());
// Create Labels
name = new JLabel("Enter student name: ");
nameField = new JTextField(10);
nameField.addActionListener(new buttonListener());
grade = new JLabel("Enter students mark: ");
gradeField = new JTextField(5);
gradeField.addActionListener(new buttonListener());
// Bottom segment for result
setLayout(new BorderLayout());
// Button Panel
JPanel ButtonPane = new JPanel();
ButtonPane.setLayout(new BoxLayout(ButtonPane, BoxLayout.PAGE_AXIS));
addEntry.setAlignmentX(CENTER_ALIGNMENT);
calculate.setAlignmentX(CENTER_ALIGNMENT);
ButtonPane.add(Box.createVerticalStrut(15));
ButtonPane.add(addEntry);
ButtonPane.add(Box.createVerticalStrut(15));
ButtonPane.add(calculate);
// Label Panel
JPanel labelPane = new JPanel();
labelPane.setLayout(new BoxLayout(labelPane, BoxLayout.PAGE_AXIS));
labelPane.add(name);
labelPane.add(Box.createRigidArea(new Dimension(5, 0)));
labelPane.add(nameField);
labelPane.add(Box.createRigidArea(new Dimension(0, 2)));
labelPane.add(grade);
labelPane.add(Box.createRigidArea(new Dimension(5, 0)));
labelPane.add(gradeField);
myBottomPanel mybottompanel = new myBottomPanel();
// Add all panels to the main panel
add(labelPane, BorderLayout.NORTH);
add(ButtonPane, BorderLayout.CENTER);
add(mybottompanel, BorderLayout.SOUTH);
setBackground(Color.WHITE);
setPreferredSize(new Dimension(400, 300));
}
public class resultTable extends myBottomPanel {
public void mainTable() {
GridLayout mainLayout = (new GridLayout(1, 0));
String[] columnNames = {"NAME", "GRADE"};
Object[][] data = {{nameField.getText(), gradeField.getText()}};
JTable table = new JTable(data, columnNames);
table.setPreferredScrollableViewportSize(new Dimension(500, 70));
table.setFillsViewportHeight(true);
JScrollPane scrollPane = new JScrollPane(table);
table.setFillsViewportHeight(true);
}
}
public class myBottomPanel extends JPanel {
public myBottomPanel() {
resultTable results = new resultTable();
add(results);
setBorder(BorderFactory.createTitledBorder("Students/Results"));
setOpaque(false);
}
}
public class buttonListener implements ActionListener {
@Override
public void actionPerformed(ActionEvent event) {
String studentName;
int studentMark;
if (event.getSource() == addEntry) {
studentName = nameField.getText();
String intMark = gradeField.getText();
studentMark = Integer.parseInt(intMark);
System.out.println(studentName);
System.out.println(studentMark);
}
}
}
}
最后我不确定如何为论坛正确粘贴代码,所以请原谅前几行放错了位置;我只是为它们添加了 4 个空格,以便它们显示在代码中。
【问题讨论】: