【发布时间】:2025-11-30 07:35:01
【问题描述】:
我是使用 JTextFields 的新手,对如何从 3 个不同的面板获取输入感到好奇。小组将从输入中获取数字并对分数进行平均。为此,我想访问所有 3 个面板来进行数学计算。我有一个面板,用于计算我想要平均的三个不同人的分数。因此,我想获取 mattsTotalScore 并将其与 timsTotalScore 和 BensTotalScore 相加,并使平均值出现在第四个面板上的按钮之后。
import javax.swing.*;
import java.awt.*;
public class MattPanel extends JPanel {
public MattPanel(){
Dimension size = getPreferredSize();
size.width = 250;
setPreferredSize(size);
setBorder(BorderFactory.createTitledBorder("Matt's Scores"));
JLabel memMatt = new JLabel("MEMORABILITY :");
JTextField textMemMattPane = new JTextField(10);
JLabel comMatt = new JLabel("COMPOSITION :");
JTextField textComMattPane = new JTextField(10);
JLabel mixMatt = new JLabel("MIX/MASTER :");
JTextField textMixMattPane = new JTextField(10);
JLabel soundMatt = new JLabel("SOUND DESIGN :");
JTextField textSoundMattPane = new JTextField(10);
JLabel enjoyMatt = new JLabel("ENJOYMENT :");
JTextField textEnjoyMattPane = new JTextField(10);
setLayout(new GridBagLayout());
GridBagConstraints gc = new GridBagConstraints();
///First Column ///////////////////////
gc.anchor = GridBagConstraints.LINE_END;
gc.weightx = 0.5; gc.weighty = 0.5;
gc.gridx = 0; gc.gridy = 0;
add(memMatt, gc);
gc.gridx = 0; gc.gridy = 1;
add(comMatt, gc);
gc.gridx = 0; gc.gridy = 2;
add(mixMatt, gc);
gc.gridx = 0; gc.gridy = 3;
add(soundMatt, gc);
gc.gridx = 0; gc.gridy = 4;
add(enjoyMatt, gc);
//Second Column //////////////////////
gc.anchor = GridBagConstraints.LINE_START;
gc.gridx = 1; gc.gridy = 0;
add(textMemMattPane,gc);
gc.gridx = 1; gc.gridy = 1;
add(textComMattPane,gc);
gc.gridx = 1; gc.gridy = 2;
add(textMixMattPane,gc);
gc.gridx = 1; gc.gridy = 3;
add(textSoundMattPane,gc);
gc.gridx = 1; gc.gridy = 4;
add(textEnjoyMattPane,gc);
}
}
【问题讨论】:
-
按照你的方式,你不能。您所有的字段都是本地字段。在类级别声明它们,您可以为它们及其值创建设置器
-
啊好吧,这很有道理。我试试看
-
..MattPanel extends JPanel除非确实需要,否则不要扩展 GUI 组件。它会导致这样的难题。