私は本当に一緒にこのコードを組み立てるのに苦労しています。最終的な計画は、2つの入力フィールドがあり、1つは名前を要求し、もう1つはマークを求めるフィールドです。私は名前とマークを入力し、ボタンを押すとプログラムはテーブルにこれらの値を入力し、その合計でそのマーク(A、B、Cなど)にグレードを割り当てます。最後にすべての値が入力されると、ユーザは、テキストファイルに名前および適切な等級のリストを印刷する別のボタンを押す。それが最後のゲームです。パネルに挿入できるテーブルを生成する方法は?
現在、私はテーブルを作成してフレームの下部に配置するのが難しいため、1つのボタンを押すたびに更新されます。私のフレームの下部は '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スペースを追加したので、彼らはコードに表示されます。
[MCVE]を示し、あなたの修正されたアプローチを含めるようにあなたの質問を編集してください。 – trashgod