我有两节课。
主要在jframe中打开第二个,用户将按下按钮并从主类/ jframe editare(String value)
触发一个方法,该方法将自动将一些数据添加到主jframe中的某些jtextfields。问题是它不会触发方法。我尝试从主类调用其他方法,它也没有调用它们。我尝试了很多东西,比如过去1-2小时,无法弄明白。< / p>
这是一些代码: 从第二个jframe:
private void jButton3ActionPerformed(java.awt.event.ActionEvent evt) {
Test2 test2=new Test2();
test2.citireser(list.getSelectedValue().toString()); //won't work.works if i call it from the same method,the main one
test2.restart(); //won't work either
this.dispose(); }
从第一个jframe开始,主要是:
public void citireser(String cur) {
try {
serializedPath = "C:/Inter/" + cur;
InputStream file = new FileInputStream(serializedPath);
InputStream buffer = new BufferedInputStream(file);
ObjectInput input = new ObjectInputStream(buffer);
String[] storeAllArraysREAD[] = (String[][]) input.readObject();
prodr = storeAllArraysREAD[0];
cantr = storeAllArraysREAD[1];
pretr = storeAllArraysREAD[2];
input.close();
buffer.close();
file.close();
System.err.println("prodr[1]= "+prodr[1].toString());
for (int m = 0; m < prodr.length - 1; m++) {
allprod.get(m).setText(prodr[m]);
allcant.get(m).setText(cantr[m]);
allpret.get(m).setText(pretr[m]);
produsnou();
}
} catch (ClassNotFoundException ex) {
System.err.println("EROARE");
} catch (IOException ex) {
System.err.println("EROARE");
}
}
编辑:好的,经过几个小时尝试不同的东西后我就明白了。
public class Opt extends javax.swing.JFrame implements Printable {
private final Test2 main;
public Opt(Test2 aMain) {
main = aMain;
try {
} catch (Exception e) {
e.printStackTrace();
}
initComponents();
jScrollPane2.getVerticalScrollBar().setPreferredSize(new Dimension(0, 0));
jScrollPane2.getVerticalScrollBar().setUnitIncrement(16);
citirel();
if (list.getModel().getSize() == 0) {
jButton1.setEnabled(false);
jButton2.setEnabled(false);
}
}
感谢您的帮助,我不知道应该选择谁作为正确的答案:(对不起其他人
答案 0 :(得分:3)
此处的问题是您正在使用Test2
的新实例。在执行的操作(第一个代码块)中,您将创建一个新的Test2
(这将是第一帧)。您必须在某处(通常是字段)保留对创建的第一个Test2
的引用。
如果您还有其他问题,请考虑修改问题并发布完整代码(至少完整的两个框架)。我的蜘蛛感觉告诉我,有一些背景缺失。
此外,我们有类似的姓氏。 : - )
答案 1 :(得分:1)
如果有任何错误,请纠正我,因为我试图从不完整的代码中理解你的程序:
Test2
(包含您的计划入口点JFrame
的{{1}})会在某个时刻创建第二个类(也是main(string[])
)并打开它。JFrame
窗口的某些元素,并关闭辅助窗口。假设上述内容是正确的,我可以在您发布的代码段中看到一个明显的问题。
在Test2
中,您正在创建新 jButton3ActionPerformed
对象,并对其进行修改。如果要修改原始窗口,则需要存储对其的引用。例如,需要一个Test2
对象作为第二个类的参数,并将该参数存储为类中的字段。