簡體   English   中英

Java Swing可視編輯器

[英]Java Swing Visual Editor

我該如何在主程序中調用此函數?

    private JFrame getMainpageframe1() {
    if (mainpageframe1 == null) {
        mainpageframe1 = new JFrame();
        mainpageframe1.setSize(new Dimension(315, 306));
        mainpageframe1.setContentPane(getMainpage());
        mainpageframe1.setTitle("Shopping For Less: Main Page");
        mainpageframe1.setVisible(true);
        mainpageframe1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    return mainpageframe1;
}

public static void main(String[] args) {        
   //call that function to output the JFrame?
}

謝謝

首先,您需要將GUI內容放置在EDT上。 Java庫為您提供了一些幫助程序方法,這些方法使SwingUtilities大大簡化了您的生活。

其次,我將嘗試稍微重構代碼,並可能將要構建的JFrame移到單獨的類中。 在此代碼示例中,我將其包含在包含main方法的同一類中,並在此擴展JFrame。

public class YourApp extends JFrame {

  public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
      public void run() {
        YourApp app = new YourApp();
        app.setupFrame();
      }
    });
  }

  private setupFrame() {
    this.setSize(new Dimension(315, 306));
    this.setContentPane(getMainpage());
    this.setTitle("Shopping For Less: Main Page");
    this.setVisible(true);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   }
 }
YOurClass instance = new YourClass();
instance.getMainpageframe1();

但是,這段代碼確實非常糟糕。 您應該至少移出setVisible()-否則,代碼將在該點處阻塞,並且該方法將不會返回,直到框架不再可見為止。

YOurClass instance = new YourClass();
instance.getMainpageframe1().setVisible(true);
public class YourClass {
    public static void main(String[] args) {
        YourClass instance = new YourClass();
        JFrame frame = instance.getMainpageframe1();
    }
}

之所以必須在main中創建整個類的實例,是因為無法從靜態函數調用非靜態函數。

public class YourClass{

  JFrame mainpageframe1;

  private JFrame getMainpageframe1() {
    if (mainpageframe1 == null) {
      mainpageframe1 = new JFrame();
      mainpageframe1.setSize(new Dimension(315, 306));
      mainpageframe1.setContentPane(getMainpage());
      mainpageframe1.setTitle("Shopping For Less: Main Page");
      mainpageframe1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      mainpageframe1.setVisible(true);
    }
    return mainpageframe1;
  }

  public static void main(String[] args) {
    YourClass yourClass = new YourClass();
    yourClass.getMainpageframe1();
  }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM