我试图通过math1a设置math1a和math2a中进度条的值,但是只设置了math1a中进度条的值,而math2a类中的进度条没有。我尝试对matha2进度条使用set和get方法,但它似乎没有让我设置它的值?
/////////////////////////////////////////////// //////////////////////////// math1 main class /////////////////// ///////////////////////////////////
public class math1 extends javax.swing.JFrame {
public math1() {
initComponents();
}
@SuppressWarnings("unchecked")
private void connectActionPerformed(java.awt.event.ActionEvent evt) {
math1a m1 = new math1a();
m1.setVisible(true);
m1.pbStart();
math2a m2 = new math2a();
m2.setVisible(true);
}
public static void main(String args[]) {
/* Set the Nimbus look and feel */
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new math1().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JButton connect;
// End of variables declaration
}
/////////////////////////////////////////////// //////////////////////////// math1a class //////////////////// //////////////////////////////////////////
public class math1a extends javax.swing.JFrame {
public math1a() {
initComponents();
}
@SuppressWarnings("unchecked")
math2a m2 = new math2a();
public void pbStart(){
//attempt 1
pb1.setValue(100);
m2.setPB(100);
m2.pb2.setValue(m2.getPB());
//attempt 2
m2.setBar(100);
}
public static void main(String args[]) {
/* Set the Nimbus look and feel */
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new math1a().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JProgressBar pb1;
// End of variables declaration
}
/////////////////////////////////////////////// //////////////////////////// math2a class //////////////////// //////////////////////////////////////////
public class math2a extends javax.swing.JFrame {
private int bar;
public math2a() {
initComponents();
}
@SuppressWarnings("unchecked")
//attempt 1
public void setPB(int bar){
this.bar = bar;
}
public int getPB(){
return this.bar;
}
//attemp2
public void setBar(int pb2){
this.pb2.setValue(pb2);
}
public static void main(String args[]) {
/* Set the Nimbus look and feel */
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new math2a().setVisible(true);
}
});
}
// Variables declaration - do not modify
public javax.swing.JProgressBar pb2;
// End of variables declaration
}
答案 0 :(得分:0)
在connectActionPerformed
中,您创建math2a
的实例并使其可见,这是屏幕中的窗口...
private void connectActionPerformed(java.awt.event.ActionEvent evt) {
math1a m1 = new math1a();
m1.setVisible(true);
m1.pbStart();
math2a m2 = new math2a();
m2.setVisible(true);
}
但是在math1a
中,您创建了math2a
的第二个实例,该实例在屏幕上不可见...
@SuppressWarnings("unchecked")
math2a m2 = new math2a();
public void pbStart(){
//attempt 1
pb1.setValue(100);
m2.setPB(100);
m2.pb2.setValue(m2.getPB());
//attempt 2
m2.setBar(100);
}
您需要传递在math2a
中创建的connectActionPerformed
的引用,或者只使用您在math1a
中创建的实例。
就个人而言,我都不这样做。相反,我会使用math1a
和math2a
之间共享的某种模型,这样可以math1a
更新模型并使用{{3} },模型会通知math2a
,然后就可以更新它的进度条。
您可能希望阅读Observer Pattern,这样可以让人们更轻松地阅读您的代码并让您阅读其他代码