2013-07-04 66 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的新手。我被赋予创建tabbedpane的任务。我只是想知道你能否将上面的类调入下面的JTabbed窗格?因为在课堂上抛出每个代码将会是一团糟。已经跑过很多网站,但仍然徒劳。希望有人能指出它。调用JFrame类到另一个类

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

} 
+1

请原谅(s)有两个不同的类,两个扩展JFrame, – mKorbel

回答

0

Temperature类必须是一个JPanel,你必须创建一个suituable构造函数,它初始化你的GUI。然后,你可以添加JPanelJTabbedPane在这样的另一个类:

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的大小为空?
你怎么看到不可见的东西?
使用方法JFrame.setSize(宽,高) [Link]

第二件事是:
有一个名为JFrame.setVisible(boolean)方法 [Link],你有没有想过为什么该方法提供?
使JFrame可见的课程。

的另一件事是:
有一个名为setDefaultCloseOperation(int值) [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); 

} 

参考甲骨文Java文档的方法休息:
http://docs.oracle.com/javase/6/docs/api/javax/swing/JFrame.html

,最后:即使我修改后的代码
你会看到正确标签面板因为您必须在JFrame内部使用
布局管理器 [Link]来对齐,修复和放置组件。

+0

是的,是的,没有必要的,没有。是的,大小不应该为空。是的,当然JFrame应该是可见的。 'DefaultCloseOperation'不是必需的。不,不需要设置'LayoutManager',因为'JFrame'自动使用'BorderLayout'。 – htz

+0

@htz:需要DefaultCloseOperation,因为如果关闭JFrame,JVM仍然会运行事件。布局经理不需要任何地方,是的,我同意这一点。一个好的JAVA程序员使用这些来避免代码中的风险和错误。 –