Swingを使用してアプリケーションを作成するとき、人々がJFrameを作成するために2つのことのいずれかを行うのを見てきました。どちらがより良いアプローチであり、その理由は何ですか?
私はJavaとプログラミングの初心者です。私の唯一の学習ソースは、本、YouTube、StackOverflowです。
import {imports};
public class GuiApp1 {
public static void main(String[] args) {
new GuiApp1();
}
public GuiApp1() {
JFrame guiFrame = new JFrame();
guiFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
guiFrame.setTitle("Example GUI");
guiFrame.setSize(300,250);
................
}
そして
import {imports};
public class GuiApp1 extends JFrame {
public Execute() {
getContentPane().setBackground(Color.WHITE);
getContentPane().setLayout(null);
setSize(800, 600);
.............
}
public static void main(String[] args) {
Execute frame1 = new Execute();
frame1.setVisible(true);
}
}
考え:
getX()
メソッドとgetY()
メソッドを持つJFrameまたはJPanelを作成してみてください!)。優先 継承よりも構成 。
2番目の例では継承を使用していますが、JFrame
の機能を変更しないため、正当な理由はありません。
余談ですが、これらが表示されているコードの例である場合は、新しいソースを見つけてください1補足。示されている数行のコードでも、それぞれが非常に疑わしいことを行っています。例えば。
getContentPane().setBackground(Color.WHITE); getContentPane().setLayout(null); setSize(800, 600);
getContentPane()
)は必要ありません。null
レイアウトを使用しています。これは、数えたり説明したりできる方法で壊れます。pack();
に置き換えるのが最適です。JFrame guiFrame = new JFrame(); guiFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); guiFrame.setTitle("Example GUI"); guiFrame.setSize(300,250);
JFrame guiFrame = new JFrame("Example GUI");
guiFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
に設定する方が適切です個人的には、最初のアプローチ(JFrame
のインスタンスを作成する)が好まれます。私はこれを好むのは...
アプリケーションを専用のコンテナにロックすることはありません...フレームにアプレットを追加したり、アプレットにフレームを追加したりする人がたくさんいます。GUIの大部分をJPanel
に単純に配置した場合そもそも、これらの問題は発生しません。
また、作成するUIがはるかに柔軟であることも意味します。たとえば、現在のアプリケーションでも将来のアプリケーションでも、自分を閉じ込めることなく再利用できます。
JFrame
を拡張する際の主な不満は、実際には新しい機能を追加していないことです。これは、setVisible
を使用する以外に効果的に再利用できます。
JFrame
を拡張する際に私が抱えるもう一つの問題は、人々がすぐにPaint
をオーバーライドすることです。これは、本当に本当に悪いことです。これを行うことには非常に多くの問題があり、それらを繰り返しリストしなければならないのは単に苦痛です...
だから... 2セント以上の価値があります。 JFrame
のインスタンスを作成し、それにコンテンツを追加します。必要に応じて、static
メソッド呼び出しshowMyAwesomeGUI
を作成します。
最初のアプローチの方が優れています。
通常、フレームに新しい機能を追加することはないため、クラスの直接インスタンスを作成することは理にかなっています。
最初のアプローチに進みます。
これにより、より多くのフレームを作成できるようになります。アプリケーションは複数のウィンドウを持つことができるためです。 2番目の場合と同様に、これ以上フレームを作成することはできません。