簡體   English   中英

Java-Swing:正確的樣式/約定/語法

[英]Java-Swing: Proper Style/Conventions/Syntax

我對應該如何用Java實現GUI感到困惑,因為有很多不同的方法。 有一個線程已經描述了這些適當的習慣: Java / Swing GUI最佳實踐(從代碼的角度來看)但是我很困惑,因為當使用此方法時,Netbeans在從超類調用的函數旁邊說“構造函數中的可重寫方法調用” 。

我不問如何使用GUI或如何實現它們,但我要求實現它們的正確方法。 由於出現此錯誤,我對此格式有些懷疑。 我可以用這種格式運行程序沒有問題。 至少在程序很小而簡單的時候。

我從上面提到的線程中獲得了以下示例代碼:

public class Main {
    public static void main(String[] args) {
        final String text = args[0];
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                final MyWindow wnd = new MyWindow(text);
                wnd.setVisible(true);
            }
        });
    }
}

public class MyWindow extends JFrame {
    public MyWindow(String text) {
        super("My Window");

        setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); //Overridable method call in constructor
        addWindowListener(new WindowAdapter() {   //Overridable method call in constructor
            @Override
            public void windowClosing(WindowEvent e) {
                MyWindow.this.setVisible(false);
                MyWindow.this.dispose();
            }
        });

        final JButton btn = new JButton(text);
        btn.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                JOptionPane.showMessageDialog(MyWindow.this, "Button Pressed", "Hey", JOptionPane.INFORMATION_MESSAGE);
            }
        });

        setLayout(new FlowLayout());
        add(btn);
        pack();
    }
}

並且此錯誤會在構造函數中繼承並使用的任何其他方法發生。 我知道此線程解釋了為什么不這樣做: 構造函數中可重寫的方法調用怎么了? 所以現在我問,這仍然是合適的風格嗎? 在實現GUI時這樣做合適嗎?

注意:不是一個非常有經驗的程序員,所以我希望我的措辭正確。 我想從一開始就學習適當的風格。

為了避免在JFrame構造函數中放置可重寫的方法,您必須在構造函數之外(即:在主函數中)進行所有JFrame初始化。 這通常是不好的做法,因為它可能導致框架的不同實例之間存在差異。 是的,您做對了所有事情。 Netbeans有時會顯示一些愚蠢的警告。

暫無
暫無

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

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