Arrays 如何使用for语句读取多个JTextField并将其放入数组中以传输到其他类
我快拿到养老金了,我对我们可以为工程专业学生购买的项目感到失望。通常,它们并不完全是我们想要的。 所以,作为一个老前辈,我开始用Java编写自己的程序。也因为它对我来说是一种乐趣 我想使程序灵活,便于重用。 我正在进行计算,为此我们需要在程序中输入基本的工程数据。因此,我在循环中使用JTextField在类“a_designdatabasesinvoer”中生成输入,并在大型机类的“MiddenPaneel”上显示它们。 在类“BesturingLinkerKnoppenPaneel”中,我想按SAVE按钮读取“A_designDatabasesInvoer”中的JTextFields,并将它们传输到A_BasisDataASME类中进行存储。 从存储器中,我想在RechTerpanel中显示数据,以显示我正在使用的数据。 听起来很复杂,但如果我将所有JTextFields分开编程,它就会工作。那不是我想要的。比我不能重用的类 类文件: java:在这里设置JFrame和JPanels,我在面板中加载“BesturingLinkerKnoppenPaneel”和“A_DesignBasisInvoer” BesturingLinkerKnoppenPaneel.java:制作用于保存数据的jbutton,并在将来的导出中写入文件。 A_DesignBasisInvoer.java:创建输入字段和描述,并将其写入MiddenPaneel A_BasisDataASME.java:存储临时数据以传输到其他类 我的问题! 如果我将所有JTextfields分开,我可以读取它们并传输到其他文件。 但是如果我对jtextfiled使用一个循环并将它们添加到一个数组中,则会出现错误,我会看到文件底部的BesturingLinkerKnoppenPaneel粉红色文本。 我知道我做错了什么,但却找不到。所有评论都非常感谢! 提前感谢您的帮助 问候,, 唐爷爷Arrays 如何使用for语句读取多个JTextField并将其放入数组中以传输到其他类,arrays,jtextfield,Arrays,Jtextfield,我快拿到养老金了,我对我们可以为工程专业学生购买的项目感到失望。通常,它们并不完全是我们想要的。 所以,作为一个老前辈,我开始用Java编写自己的程序。也因为它对我来说是一种乐趣 我想使程序灵活,便于重用。 我正在进行计算,为此我们需要在程序中输入基本的工程数据。因此,我在循环中使用JTextField在类“a_designdatabasesinvoer”中生成输入,并在大型机类的“MiddenPaneel”上显示它们。 在类“BesturingLinkerKnoppenPaneel”中,我想按
private JPanel contentPane;
/*--------------------------------------------------------------------------------------------------------------------------------------
* BELOW Call FILES IN CLASS
*--------------------------------------------------------------------------------------------------------------------------------------
*/
BesturingLinkerKnoppenPaneel besturingLinkerKnoppenPaneel = new BesturingLinkerKnoppenPaneel();
A_BasisDataASME a_BasisDataASME = new A_BasisDataASME();
A_DesignDataBasisInvoer a_DesignDataBasisInvoer = new A_DesignDataBasisInvoer();
static JTextArea informatieTekst = new JTextArea();
/*--------------------------------------------------------------------------------------------------------------------------------------
* BELOW IN THE CONSTRUCTOR BUILD SCREEN WITH PANELS
*--------------------------------------------------------------------------------------------------------------------------------------
*/
public MainFrame(String calculationCode, String TekstMainPanel)
{
String calculationCodeVoorFrameTitel = calculationCode;
/*--------------------------------------------------------------------------------------------------------------------------------------
* LOAD CLASS SCHERMCONSTANTEN FOR SIZING
* --------------------------------------------------------------------------------------------------------------------------------------
*/
SchermConstanten schermConstanten = new SchermConstanten();
int scherminstellingen[] = schermConstanten.getschermConstanten();
Font font = new Font("Arial", Font.PLAIN, scherminstellingen[16]);
Font fontBold = new Font("Arial", Font.BOLD, scherminstellingen[16]);
/*--------------------------------------------------------------------------------------------------------------------------------------
* DE FRAME / ContentPane SETUP
* --------------------------------------------------------------------------------------------------------------------------------------
*/
setTitle(calculationCodeVoorFrameTitel);
setMinimumSize(new Dimension(1900, 1200));
setMaximumSize(new Dimension(scherminstellingen[0], scherminstellingen[1]+35));
setBounds(scherminstellingen[2], scherminstellingen[3], scherminstellingen[0], scherminstellingen[1]+35);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentPane = new JPanel();
contentPane.setBackground( Color.decode("#DCDCDC"));
contentPane.setLayout(null);
/*--------------------------------------------------------------------------------------------------------------------------------------
* SETUP PANELS
* --------------------------------------------------------------------------------------------------------------------------------------
*/
JPanel LinkerPaneel = new JPanel();
LinkerPaneel.setLayout(new BoxLayout(LinkerPaneel, BoxLayout.Y_AXIS));
LinkerPaneel.setPreferredSize(new Dimension(scherminstellingen[8], scherminstellingen[9]));
LinkerPaneel.setBounds(10, scherminstellingen[5]+20, scherminstellingen[8], scherminstellingen[9]);
LinkerPaneel.setBorder(new EtchedBorder(EtchedBorder.RAISED, null, null));
LinkerPaneel.setBackground(Color.decode("#D3D3D3"));
LinkerPaneel.setOpaque(false);
LinkerPaneel.setVisible(true);
JPanel MiddenPaneel = new JPanel();
MiddenPaneel.setLayout(new FlowLayout(FlowLayout.LEFT));
MiddenPaneel.setPreferredSize(new Dimension(scherminstellingen[12], scherminstellingen[9]));
MiddenPaneel.setBounds(scherminstellingen[8]+20, scherminstellingen[5]+20, scherminstellingen[12], scherminstellingen[9]);
MiddenPaneel.setBorder(new EtchedBorder(EtchedBorder.RAISED, null, null));
MiddenPaneel.setBackground(Color.decode("#D3D3D3"));
MiddenPaneel.setOpaque(true);
MiddenPaneel.setVisible(true);
JPanel RechterPaneel = new JPanel();
RechterPaneel.setLayout(new FlowLayout(FlowLayout.LEFT));
RechterPaneel.setPreferredSize(new Dimension(scherminstellingen[14], scherminstellingen[15]));
RechterPaneel.setBounds(scherminstellingen[8]+scherminstellingen[12]+30, scherminstellingen[5]+20, scherminstellingen[14], scherminstellingen[15]);
RechterPaneel.setBorder(new EtchedBorder(EtchedBorder.RAISED, null, null));
RechterPaneel.setBackground(Color.decode("#D3D3D3"));
RechterPaneel.setOpaque(true);
RechterPaneel.setVisible(true);
contentPane.add(MiddenPaneel, BorderLayout.CENTER);
contentPane.add(LinkerPaneel, BorderLayout.WEST);
contentPane.add(RechterPaneel, BorderLayout.EAST);
setContentPane(contentPane);
//END LAYOUT PANEEL
/*--------------------------------------------------------------------------------------------------------------------------------------
* LOAD BASIS DATA ON SCREEN
* --------------------------------------------------------------------------------------------------------------------------------------
*/
a_DesignDataBasisInvoer = new A_DesignDataBasisInvoer(calculationCodeVoorFrameTitel);
a_DesignDataBasisInvoer.setBackground(Color.decode("#D3D3D3"));
MiddenPaneel.add(a_DesignDataBasisInvoer);
/*--------------------------------------------------------------------------------------------------------------------------------------
* LOAD JBUTTON BAR AT THE LEFT SCREEN
* --------------------------------------------------------------------------------------------------------------------------------------
*/
besturingLinkerKnoppenPaneel = new BesturingLinkerKnoppenPaneel();
besturingLinkerKnoppenPaneel.setBackground(Color.decode("#D3D3D3"));
LinkerPaneel.add(besturingLinkerKnoppenPaneel);
}
}
public class BesturingLinkerKnoppenPaneel extends JPanel implements ActionListener {
public static final long serialVersionUID = 1L;
private static final Object[] Input = null;
static JTextField[] BasisDataInv;
//private ArrayList<Double> invoer = new ArrayList<Double>();
ArrayList<JTextField> invoer = new ArrayList<JTextField>();
// private List<Contact> list = new ArrayList<Contact>();
JButton LeftSaveBtn;
SchermConstanten schermConstanten = new SchermConstanten();
/*--------------------------------------------------------------------------------------------------------------------------------------
* CALL FILES
*--------------------------------------------------------------------------------------------------------------------------------------
*/
A_BasisDataASME a_BasisDataASME = new A_BasisDataASME();
A_DesignDataBasisInvoer a_DesignDataBasisInvoer = new A_DesignDataBasisInvoer();
/*--------------------------------------------------------------------------------------------------------------------------------------
* DE CONSTRUCTOR
* --------------------------------------------------------------------------------------------------------------------------------------
*/
public BesturingLinkerKnoppenPaneel() {
int scherminstellingen[] = schermConstanten.getschermConstanten();
Font font = new Font("Arial", Font.PLAIN, scherminstellingen[16]);
Font fontBold = new Font("Arial", Font.BOLD, scherminstellingen[16]);
LeftSaveBtn = new JButton("Save");
LeftSaveBtn.setBounds(0,0,50,30);
add(LeftSaveBtn);
LeftSaveBtn.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e)
{
JButton clicked = (JButton)e.getSource();
if (clicked == LeftSaveBtn)
{
/*--------------------------------------------------------------------------------------------------------------------------------------
* OVERHERE I WANT TO LOAD ALL JTEXTFIELDS FROM THE FILE "A_DesignDataBasisInvoer"
* AND WRITE THEM IN AN ARRAY OR ARRAYLIST AND TRANSFER TO THE FILE "A_BasisDataASME" FOR STORAGE AND USE IN THE REST OF THE PROGRAM.
* I NEED THIS FOR EACH CALCULATION
* --------------------------------------------------------------------------------------------------------------------------------------
*/
for(int k=0; k<2; k++)
{
try {
Input[k] = A_DesignDataBasisInvoer.BasisDataInv.getText(k,3);
} catch (BadLocationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
A_BasisDataASME.setBasisDataInv(Input);
}
System.out.println(Input.length);
}
}
}
public class A_DesignDataBasisInvoer extends JPanel{
public String[][] ArrayDesignData;
public static JTextField BasisDataInv;
JButton SaveBasisDataBtn;
public A_DesignDataBasisInvoer(String calculationCodeVoorFrameTitel) {
SchermConstanten schermConstanten = new SchermConstanten();
int scherminstellingen[] = schermConstanten.getschermConstanten();
Font font = new Font("Arial", Font.PLAIN, scherminstellingen[16]);
Font fontBold = new Font("Arial", Font.BOLD, scherminstellingen[16]);
Font fontHeading = new Font("Arial", Font.BOLD, scherminstellingen[16]*3/2);
/*--------------------------------------------------------------------------------------------------------------------------------------
* SETUP INPUT SCREEN JTEXTFIELDS
*---------------------------------------------------------------------------------------------------------------------------------------
*/
JPanel DataInvoerPaneel= new JPanel();
DataInvoerPaneel.setPreferredSize(new Dimension((scherminstellingen[12])/3*2, scherminstellingen[13]-20));
DataInvoerPaneel.setBackground(Color.decode("#D3D3D3"));
DataInvoerPaneel.setLayout(null);
DataInvoerPaneel.setOpaque(true);
DataInvoerPaneel.setVisible(true);
add(DataInvoerPaneel);
String[][] DesignDataInput_ASMEB313_2020 = {
{"Design Pressure", "Pd:","DesignPressurefield","Bar(g)"}, {"Operating Pressure", "Po:","OperatingPressurefield","Bar(g)"}, {"Design Temperature", "Td:", "DesignTemperatureField", "\u00B0"+"C"}, {"Operating Temperature", "To:", "OperatingTemperatureField","\u00B0"+"C"},{"Number of Cycles", "N:", "CycleField", ""}};
if (calculationCodeVoorFrameTitel == "B31.3-2020"){
ArrayDesignData = DesignDataInput_ASMEB313_2020;
}
GridBagConstraints gc = new GridBagConstraints();
gc.gridx = 0;
gc.gridy = 0;
gc.weightx = 1;
gc.weighty = 0.01;
gc.fill = GridBagConstraints.NONE;
gc.anchor = GridBagConstraints.LINE_START;
/* Variabele FOR POSITIONING */
int VertPositieVar1 = 35;
int HorzPositieVar1 = 270;
int HorzPositieVar2 = 340;
int HorzPositieVar3 = 430;
int lengte = ArrayDesignData.length;
System.out.println(lengte);
/* MAKE JTEXTFIELDS */
JTextField[] BasisDataInv = new JTextField[ArrayDesignData.length];
for(int i=0; i<ArrayDesignData.length; i++)
{
int vert = i * 40;
BasisDataInv[i] = new JTextField();
BasisDataInv[i].setForeground(Color.BLACK);
BasisDataInv[i].setBackground( Color.decode("#D3D3D3") );
BasisDataInv[i].setFont(font);
BasisDataInv[i].setBounds(HorzPositieVar2, 40+VertPositieVar1*i,80, 30);
BasisDataInv[i].setBorder(new LineBorder(Color.BLUE));
BasisDataInv[i].setOpaque(true);
BasisDataInv[i].setVisible(true);
DataInvoerPaneel.add(BasisDataInv[i]);
}
}
public A_DesignDataBasisInvoer() {
// TODO Auto-generated constructor stub
}
}
public class A_BasisDataASME {
private static Object[] basisDataInv;
public static void setBasisDataInv(Object[] input){
basisDataInv = input;
}
public static Object[] getBasisDataInv(){
return basisDataInv;
}
}
public SchermConstanten() {
Dimension schermGroote = Toolkit.getDefaultToolkit().getScreenSize();
frameBreedte = schermGroote.width/10*9; //scherminstelling[0]
frameHoogte = schermGroote.height/10*9; //scherminstelling[1]
framePositieBreedte = (schermGroote.width-frameBreedte)/2; //scherminstelling[2]
framePositieHoogte = 0; //scherminstelling[3]
sizeTopToolbarBreedte = frameBreedte-20; //scherminstelling[4]
sizeTopToolbarHoogte = frameHoogte/20; //scherminstelling[5]
sizeBottomRegelHoogte = frameHoogte/30+5; //scherminstelling[6]
sizeBottomRegelBreedte = frameBreedte-20; //scherminstelling[7]
sizeLeftToolbarBreedte = frameBreedte/25; //scherminstelling[8]
sizeLeftToolbarHoogte = frameHoogte-sizeBottomRegelHoogte-sizeTopToolbarHoogte-60 ; //scherminstelling[9]
sizeTabelBreedte = frameBreedte-sizeLeftToolbarBreedte; //scherminstelling[10]
sizeTabelHoogte = frameHoogte/5; //scherminstelling[11]
sizeLeftDataFieldBreedte = (frameBreedte-sizeLeftToolbarBreedte-40)/2; //scherminstelling[12]
sizeLeftDataFieldHoogte = (frameHoogte-sizeBottomRegelHoogte-sizeTopToolbarHoogte-60); //scherminstelling[13]
sizeGeneralAreaBreedte = ((frameBreedte-sizeLeftToolbarBreedte-40)/2); //scherminstelling[14]
sizeGeneralAreaHoogte = (frameHoogte-sizeBottomRegelHoogte-sizeTopToolbarHoogte-60); //scherminstelling[15]
//text grote instellen om het leesbaar te houden bij hoge resolutie
for (int schermresolutie = 1600;schermresolutie < schermGroote.width; schermresolutie=schermresolutie+500) {
fontGrote = fontGrote +3; //scherminstelling[16]
fontButtons = fontGrote +1; //scherminstelling[17]
tabelRowHoogte = tabelRowHoogte + 3; //scherminstelling[18]
}
scherminstellingen = new int[] {frameBreedte,frameHoogte,framePositieBreedte,framePositieHoogte,sizeTopToolbarBreedte,sizeTopToolbarHoogte,sizeBottomRegelHoogte,sizeBottomRegelBreedte,
sizeLeftToolbarBreedte,sizeLeftToolbarHoogte,sizeTabelBreedte,sizeTabelHoogte,sizeLeftDataFieldBreedte,sizeLeftDataFieldHoogte,sizeGeneralAreaBreedte,sizeGeneralAreaHoogte,
fontGrote, fontButtons,tabelRowHoogte};
}
public int[] getschermConstanten() {
return scherminstellingen;
}
私有JPanel内容窗格;
/*--------------------------------------------------------------------------------------------------------------------------------------
*下面调用课堂上的文件
*--------------------------------------------------------------------------------------------------------------------------------------
*/
BesturingLinkerKnoppenPaneel BesturingLinkerKnoppenPaneel=新的BesturingLinkerKnoppenPaneel();
A_basisdaasme A_BasisDataASME=新的A_BasisDataASME();
A_designdatabasesinvoer A_designdatabasesinvoer=新A_designdatabasesinvoer();
静态JTextArea informatietest=新JTextArea();
/*--------------------------------------------------------------------------------------------------------------------------------------
*下面是带面板的构造函数构建屏幕
*--------------------------------------------------------------------------------------------------------------------------------------
*/
公共主机(字符串计算代码,字符串TeksMainPanel)
{
字符串calculationCodeVoorFrameTitel=calculationCode;
/*--------------------------------------------------------------------------------------------------------------------------------------
*负荷等级SCHERMCONSTANTEN,用于调整尺寸
* --------------------------------------------------------------------------------------------------------------------------------------
*/
SchermConstanten SchermConstanten=新SchermConstanten();
int schermistellingen[]=schermConstanten.getschermConstanten();
Font Font=新字体(“Arial”,Font.PLAIN,Schermistellingen[16]);
Font fontBold=新字体(“Arial”,Font.BOLD,Schermistellingen[16]);
/*--------------------------------------------------------------------------------------------------------------------------------------
*取消框架/内容窗格设置
* --------------------------------------------------------------------------------------------------------------------------------------
*/
setTitle(calculationCodeVoorFrameTitel);
设置最小尺寸(新尺寸(1900、1200));
setMaximumSize(新尺寸(scherminstellingen[0],scherminstellingen[1]+35));
立根(scherminstellingen[2],scherminstellingen[3],scherminstellingen[0],scherminstellingen[1]+35);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
contentPane=newjpanel();
contentPane.setBackground(Color.decode(#dcdc”);
contentPane.setLayout(null);
/*--------------------------------------------------------------------------------------------------------------------------------------
*设置面板
* --------------------------------------------------------------------------------------------------------------------------------------
*/
JPanel linkerpanel=新的JPanel();
setLayout(新的BoxLayout(LinkerPaneel,BoxLayout.Y_轴));
LinkerPanel.setPreferredSize(新维度(scherminstellingen[8],scherminstellingen[9]);
LinkerPaneel.setBounds(10,scherminstellingen[5]+20,scherminstellingen[8],scherminstellingen[9]);
linkerPanel.setBorder(新的蚀刻边框(蚀刻边框.RAISED,null,null));
linkerPanel.setBackground(彩色解码(“#d3”);
LinkerPaneel.set不透明(false);
linkerPanel.setVisible(true);
JPanel MiddenPaneel=新的JPanel();
setLayout(新的FlowLayout(FlowLayout.LEFT));
设置首选尺寸(新尺寸(scherminstellingen[12],scherminstellingen[9]);
MiddenPaneel.setBounds(scherminstellingen[8]+20,scherminstellingen[5]+20,scherminstellingen[12],scherminstellingen[9]);
MiddenPaneel.setboorder(新的蚀刻边框(蚀刻边框.RAISED,null,null));
中盘。背景(颜色。解码(#d3”);
中盘鳗。设置不透明(真);
MiddenPaneel.setVisible(真);
JPanel RechterPaneel