2013-07-04 3 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

클래스 TemperatureJPanel을 수 있고 당신은 당신의 GUI를 초기화합니다 suituable 생성자를 만들어야합니다. 그럼 당신은이 같은 다른 클래스에 JTabbedPaneJPanel를 추가 할 수 있습니다

모두의
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

좋아 첫째 :
JFrame의 크기가 null 인 이유는 무엇입니까?
보이지 않는 것을 어떻게 볼 수 있습니까 ???
사용 방법 JFrame.setSize (폭, 높이)는 [Link]

두 번째 문제는 다음과 같습니다 JFrame.setVisible (부울)라는 방법이 있습니다
[Link, 혹시 이유를 생각 그 방법이 제공됩니까?
JFrame을 물론 볼 수있게하려면.

또 한가지이다
JFrame의 가 닫힐 때,이 사용 무엇 정의 [Link] 의 setDefaultCloseOperation (int 값)라고하는 방법이있다. 당신은 탭 창을 제대로 볼 수 없습니다
심지어 내 수정 된 코드 :
http://docs.oracle.com/javase/6/docs/api/javax/swing/JFrame.html

그리고 마지막으로 :

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); 

} 

이 방법의 나머지 부분에 대한 오라클 자바 문서를 참조하십시오 : 여기 는 코드입니다 구성 요소를 정렬, 수정 및 배치하려면
레이아웃 관리자 [Link]을 JFrame 내부에 사용해야하기 때문입니다.

+0

예, 예, 필요 없음 및 아니요를 확장합니다. 예, 크기가 null이 아니어야합니다. 예, 물론 JFrame을 볼 수 있어야합니다. 'DefaultCloseOperation'은 필요하지 않습니다. 아니요,'LayoutManager'는 설정할 필요가 없습니다. 왜냐하면'JFrame'은 자동적으로'BorderLayout'을 사용하기 때문입니다. – htz

+0

@htz : DefaultCloseOperation은 JFrame을 닫을 때 JVM이 계속 이벤트를 실행하기 때문에 필요합니다. 레이아웃 관리자는 어디에도 필요하지 않습니다. 그렇습니다. 좋은 자바 프로그래머는 코드의 위험과 버그를 피하기 위해 이들을 사용합니다. –

관련 문제