Java Swing Visual Editor - PullRequest
       10

Java Swing Visual Editor

1 голос
/ 05 июня 2010

Как бы я назвал эту функцию в моей основной?

    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?
}

спасибо

Ответы [ 4 ]

1 голос
/ 05 июня 2010

Во-первых, вы захотите разместить свой графический интерфейс на 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);
   }
 }
0 голосов
/ 05 июня 2010
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();
  }

}
0 голосов
/ 05 июня 2010
public class YourClass {
    public static void main(String[] args) {
        YourClass instance = new YourClass();
        JFrame frame = instance.getMainpageframe1();
    }
}

Причина, по которой вам нужно создать экземпляр всего класса в main, заключается в том, что вы не можете вызывать нестатическую функцию из статической функции.

0 голосов
/ 05 июня 2010
YOurClass instance = new YourClass();
instance.getMainpageframe1();

Однако этот код действительно очень плохой. Вы должны удалить из него хотя бы setVisible () - в противном случае код будет блокироваться в точке, и метод не будет возвращаться, пока кадр больше не будет виден.

YOurClass instance = new YourClass();
instance.getMainpageframe1().setVisible(true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...