2012-04-08 3 views
0

Мне было интересно, нужно ли создавать объект JFrame или я могу просто создать объект LoanCalculator для вызова методов JFrame? В коде GUI, который я делал ранее, создается объект JFrame (например, JFrame frame = new JFrame()) или объект класса, и программа работает нормально.JFrame или объект класса?

В чем же разница и есть ли какое-либо значение для создания объекта JFrame вместо класса один? (Только соответствующая часть моего вопроса код в моем основном классе)

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class LoanCalculator extends JFrame{ 
     private JButton jbtCompute = new JButton("Compute Payment"); 

    public LoanCalculator(){ 
     JPanel panel1 = new JPanel(); 
      panel1.setLayout(new GridLayout(5, 2)); 
     panel1.add(new JLabel("Annual Interest Rate")); 
     panel1.add(new JTextField(8)); 
     panel1.add(new JLabel("Number of Years")); 
     panel1.add(new JTextField(8)); 
     panel1.add(new JLabel("Loan Amount")); 
     panel1.add(new JTextField(8)); 
     panel1.add(new JLabel("Monthly Payment")); 
     panel1.add(new JTextField(8)); 
     panel1.add(new JLabel("Total Payment")); 
     panel1.add(new JTextField(8)); 

     JPanel panel2 = new JPanel(); 
     panel2.setLayout(new FlowLayout(FlowLayout.RIGHT)); 
     panel2.add(jbtCompute); 
    } 

    public static void main(String[] args){ 
     LoanCalculator frame = new LoanCalculator(); 

     frame.setTitle("Loan Calculator"); 
     frame.pack(); 
     frame.setLocationRelativeTo(null); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setResizable(false); 
     frame.setVisible(true); 
    } 
} 

ответ

0

если LoanCalculator подкласс JFrame, то он наследует все методы и переменные, которые принадлежат JFrame (плюс любые методы и переменные, которые вы добавить LoanCalculator самостоятельно). Все, что вы можете сделать с обычным JFrame, вы сможете сделать с LoanCalculator.

Код, который вы вставили, выглядит хорошо для меня (за исключением того, что вы никогда не добавляете panel1 или panel2 в панель содержимого вашего фрейма).