2013-07-04 2 views
0
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 

public class Temperature extends JFrame implements ActionListener{ 
private JLabel text1,text2; 
private JTextField userInput,output; 
private JButton cvrt,cvrt1,clr; 

public void BuildGUI(){ 

    text1 = new JLabel("Key in your value"); 
    text2 = new JLabel("Answer"); 
    userInput = new JTextField(); 
    output = new JTextField(); 
    cvrt = new JButton("Convert Celcius to Fahrenheit"); 
    cvrt.addActionListener(this); 
    cvrt1 = new JButton ("Convert Fahrenheit to Celcius"); 
    cvrt1.addActionListener(this); 
    clr = new JButton("Clear"); 
    clr.addActionListener(this); 

    Container cpane = getContentPane(); 
    cpane.setLayout(new GridLayout(4,2)); 
    setVisible(true); 
    cpane.add(text1); 
    cpane.add(userInput); 
    cpane.add(text2); 
    cpane.add(output); 
    cpane.add(cvrt); 
    cpane.add(cvrt1); 
    cpane.add(clr); 
} 

public void actionPerformed(ActionEvent e){ 
    double fahrenheit,celcius; 
    if(e.getSource()== cvrt){ 
     String value = userInput.getText(); 
     celcius = Double.parseDouble(value); 
     fahrenheit = celcius*1.8+32; 
     String out = ""+fahrenheit;  
     output.setText(out); 
    }else if (e.getSource()== cvrt1){ 
     String value = userInput.getText(); 
     fahrenheit = Double.parseDouble(value); 
     celcius = (fahrenheit-32)/1.8; 
     String out = ""+ celcius; 
     output.setText(out); 
    }else{ 
     userInput.setText(null); 
     output.setText(null); 
    } 
} 
} 

Извините, что я все еще новичок в Java. Мне было задано задание для создания вкладки. Я просто интересуюсь, можете ли вы вызвать класс выше в JTabbed Pane ниже? Потому что это будет беспорядок, чтобы бросить все коды в классе. Проезжал много сайтов, но все же напрасно. Надеюсь, кто-то может указать на это.Вызов класса JFrame в другой класс

public class Windows extends JFrame{ 
public Windows(){ 
    setTitle("Converter");  
    setSize(null); 
    JTabbedPane tabby = new JTabbedPane(); 
    getContentPane().add(tabby); 

} 
+1

Пожалуйста, почему у вас есть два отдельных класса, оба расширения JFrame, – mKorbel

ответ

0

Ваш класс Temperature должен быть JPanel, и вы должны создать suituable конструктор, который инициализирует свой графический интерфейс. Тогда вы могли бы добавить JPanel к вашему JTabbedPane в другом классе, как это:

public class Windows extends JFrame{ 
public Windows(){ 
    setTitle("Converter");  
    setSize(null); 
    JTabbedPane tabby = new JTabbedPane(); 
    getContentPane().add(tabby); 
    Temperature t = new Temperature(); 
    tabby.addTab(t); 
} 
0

Ok прежде всего:
Почему размер JFrame равна нулю?
Как вы можете видеть то, что не видно ???
Используйте метод JFrame.setSize (ширина, высота) [Link]

Вторая вещь:
Существует метод, называемый JFrame.setVisible (булево) [Link], вы когда-нибудь задумывались, почему этот метод предоставляется?
Чтобы сделать JFrame видимым, конечно.

Другое дело:
Существует метод, называемый setDefaultCloseOperation (целое значение) [Link], который определяет, что делать, когда JFrame закрыт, используйте это. Вот код:

public class Windows extends JFrame{ 
public Windows(){ 
    setTitle("Converter");  
    setSize(100,200); 
    JTabbedPane tabby = new JTabbedPane(); 
    getContentPane().add(tabby); 
    setDefaultCloseOperation(EXIT_ON_CLOSE); 
    setVisible(true); 

} 

См Oracle Java документацию для остальных методов:
http://docs.oracle.com/javase/6/docs/api/javax/swing/JFrame.html

И наконец:
Даже с моим пересмотренным код, который вы не увидите панель с закладками правильно потому что вы должны использовать
LAYOUT MANAGERS [Link] внутри JFrame для выравнивания, исправления и положения компонентов.

+0

да, да, не нужно и нет. Да, размер не должен быть нулевым. Да, JFrame должен быть видимым, конечно. «DefaultCloseOperation» не требуется. Нет, 'LayoutManager' не требуется устанавливать, потому что' JFrame' автоматически использует 'BorderLayout'. – htz

+0

@htz: DefaultCloseOperation необходимо, потому что JVM все еще будет запускать событие, если закрыть JFrame. Менеджеры макетов не нужны нигде, да, я согласен с этим. Хороший JAVA-программист использует те, чтобы избежать рисков и ошибок в коде. –

Смежные вопросы