2014-01-18 142 views
0
import java.util.Scanner; 

import javax.swing.*; 
@SuppressWarnings("serial") 
public class Synthetic_Division extends JFrame{ 
public void init(){ 
    JTextField JTF = new JTextField(); 
    JLabel label = new JLabel(); 
    JPanel panel = new JPanel(); 
    panel.add(label); 
    panel.add(JTF); 
    this.add(panel); 
} 
public Synthetic_Division(){ 
    super("Synthetic Division"); 
    this.init(); 
    this.setSize(600, 400); 
    this.setVisible(true); 

} 
public static void main(String[] args) { 
    int sol01 = 0, sol12 = 0, sol23 = 0, sol34 = 0, sol45 = 0, cross12 = 0, cross23 = 0, cross34 = 0, cross45 = 0, cross56 = 0, Remainder = 0, Divisor = 0, Number1 = 0, Number2 = 0, Number3 = 0, Number4 = 0, Number5 = 0, Number6 = 0, NumberOfNumbers = 0; 
    System.out.println("Please input the following values accordingly."); 
    System.out.println("1. Numbers in equation (: 4-6 :)"); 
    System.out.println("2. Divisor (: After the sign has been flipped :)"); 
    System.out.println("3. First Number"); 
    System.out.println("4. Second Number"); 
    System.out.println("5. Third Number"); 
    System.out.println("6. Fourth Number"); 
    System.out.println("7. Fifth Number (: If Needed :)"); 
    System.out.println("8. Sixth Number (: If Needed :)"); 
    Scanner in = new Scanner(System.in); 
    NumberOfNumbers = in.nextInt(); 
    Divisor = in.nextInt(); 
    Number1 = in.nextInt(); 
    Number2 = in.nextInt(); 
    Number3 = in.nextInt(); 
    Number4 = in.nextInt(); 
    if (NumberOfNumbers == 5 || NumberOfNumbers == 6) { 
     Number5 = in.nextInt(); 
    } 
    if (NumberOfNumbers == 6) { 
     Number6 = in.nextInt(); 
    } 
    if (NumberOfNumbers == 4) { 
     sol01 = Number1; 
     cross12 = sol01 * Divisor; 
     sol12 = Number2 + cross12; 
     cross23 = sol12 * Divisor; 
     sol23 = Number3 + cross23; 
     cross34 = sol23 * Divisor; 
     Remainder = Number4 + cross34; 
     if (Remainder == 0) { 
      System.out.println(sol01 + " + " + sol12 + " + " + sol23 
        + " with no remainder! "); 
     } else { 
      System.out.println(sol01 + " + " + sol12 + " + " + sol23 
        + " with a remainder of: " + Remainder); 
     } 

    } else if (NumberOfNumbers == 5) { 
     sol01 = Number1; 
     cross12 = sol01 * Divisor; 
     sol12 = Number2 + cross12; 
     cross23 = sol12 * Divisor; 
     sol23 = Number3 + cross23; 
     cross34 = sol23 * Divisor; 
     sol34 = Number4 + cross34; 
     cross45 = sol34 * Divisor; 
     Remainder = Number5 + cross45; 
     if (Remainder == 0) { 
      System.out.println(sol01 + " + " + sol12 + " + " + sol23 + " + " 
        + sol34 + " with no remainder! "); 
     } else { 
      System.out.println(sol01 + " + " + sol12 + " + " + sol23 
        + " + " + sol34 + " with a remainder of: " + Remainder); 
     } 
    } else if (NumberOfNumbers == 6) { 
     sol01 = Number1; 
     cross12 = sol01 * Divisor; 
     sol12 = Number2 + cross12; 
     cross23 = sol12 * Divisor; 
     sol23 = Number3 + cross23; 
     cross34 = sol23 * Divisor; 
     sol34 = Number4 + cross34; 
     cross45 = sol34 * Divisor; 
     sol45 = Number5 + cross45; 
     cross56 = sol45 * Divisor; 
     Remainder = Number6 + cross56; 
     if (Remainder == 0) { 
      System.out.println(sol01 + " + " + sol12 + " + " + sol23 + " + " 
        + sol34 + " + " + sol45 + " with no remainder! "); 
     } else { 
      System.out.println(sol01 + " + " + sol12 + " + " + sol23 
        + " + " + sol34 + " + " + sol45 
        + " with a remainder of: " + Remainder); 
     } 
    } else { 
     System.out.println("Please input correct number of numbers"); 
    } 

} 
} 

出于某种原因,当我运行此代码时,没有GUI显示,但有一个程序开始运行,我可以随时停止。正如你可能通过代码所说的那样,我对Java来说是个新手。我只是添加了其余的代码,希望对故障排除有所帮助,但我仍然没有将GUI实现到主类中,因为我想查看GUI是否是我想要的第一个。Java GUI没有显示

+3

你的main() – TwilightSun

回答

6

您错过了您的程序中的“入口”。在java中,这是我添加到您提供的代码中的main()方法。你只需要实际创建你写的类的一个对象。另外,如果您打算进入秋千开发阶段,您可能需要查看Swing的EDT(Event Dispatching Thread)。找到它here

import javax.swing.*; 

@SuppressWarnings("serial") 
public class Synthetic_Division extends JFrame { 
    void init() { 
     JTextField JTF = new JTextField(); 
     JLabel label = new JLabel(); 
     JPanel panel = new JPanel(); 
     panel.add(label); 
     panel.add(JTF); 
     this.add(panel); 
    } 

    public Synthetic_Division() { 
     super("Synthetic Division"); 
     this.init(); 
     this.setSize(600, 400); 
     this.setVisible(true); 
    } 

    //Here is the part you were missing. Everything else is fine. 
    public static void main(String[] args) { 
     SwingUtilities.invokeLater(new Runnable(){ 
      public void run() { 
       new Synthetic_Division(); 
      } 
     }); 
    } 
} 

编辑

看到您的编辑后,我能看到的主要问题是,你永远不创建类的实例。你失踪的主要是new Synthetic_Division();。其他一些提示:尽量不要将命令行(System.out.println())和GUI代码合并到一个程序中。这会让您和用户很快感到困惑。此外,请尝试遵守标准的Java命名约定。类以大写字母开始,每个单词后面也是大写字母SyntheticDivision而变量以小写字母开头,每个单词后面都是大写字母myVariableToWorkWith

+1

哪里是初始线程 – MadProgrammer

3

我没有在任何地方看到main类,这是Java在启动时所期望的。看看下面的代码块:

import javax.swing.*; 
@SuppressWarnings("serial") 
public class Synthetic_Division extends JFrame 
{ 
    public static void main(String[] args) 
    { 
     JFrame frame = new JFrame(); 
     JTextField JTF = new JTextField(); 
     JLabel label = new JLabel(); 
     JPanel panel = new JPanel(); 
     panel.add(label); 
     panel.add(JTF); 
     frame.add(panel); 
     frame.setTitle("Synthetic Division"); 
     frame.setSize(600, 400); 
     frame.setVisible(true); 
    } 
} 
3
  1. 你从来没有在main实例Synthetic_Division

    new Synthetic_Division(); 
    
  2. 设计很差试图用GUI

  3. 混合控制台,您需要指定一个大小为您的文本字段,这样

    new JTextField(20); 
    
  4. 从EDT像这样运行程序

    public static void main(String[] args) { 
        SwingUtilities.invokeLater(new Runnable(){ 
         public void run() { 
          new Synthetic_Division(); 
          // everything else here 
         } 
        }); 
    } 
    
-1
// you need to make an object of Synthetic_Division. 
Synthetic_Division SD = new Synthetic_Division(); 

我希望它能正常工作。