为什么我的GUI不显示

时间:2012-09-16 06:45:35

标签: java swing applet awt japplet

我正在尝试从文本文件,2D数组和toString()中删除9x9网格;出来很好,但我不知道为什么我的网格甚至没有弹出。我甚至尝试从另一个类调用一个非常简单的事件按钮来查看它是否可以工作,我仍然得不到任何东西(我从main方法调用它)。但是,当我在另一个类中运行这个简单的事件按钮时它工作正常,我不知道为什么它不起作用。

    import static org.junit.Assert.assertEquals;

    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.PrintWriter;
    import java.util.InputMismatchException;
    import java.util.Scanner;
    import javax.swing.JFileChooser;
    import javax.swing.JTextField;

    import java.applet.Applet;
    import java.awt.GridLayout;

    public class SudokuBrdManager extends Applet implements SudokuBoardManager 
    {

    private static SudokuBrdManager myBoard;
    private static ButtonGrid button;
    private int [][] Board= new int[9][9];
    private String output;


    public static void main(String[] args)
    {
        myBoard = new SudokuBrdManager();
            try {
                //myBoard.setBoard();
            } catch (InputOutOfRangeException e) {
                 TODO Auto-generated catch block
                //e.printStackTrace();
            } catch (ValueNotValidException e) {
                // TODO Auto-generated catch block
                //e.printStackTrace();
            }    
        //System.out.println(myBoard.toString());   
    }

    public void setBoard () throws InputOutOfRangeException, ValueNotValidException
    {           
        JFileChooser chooser = new JFileChooser();
        int status;

        chooser.setDialogTitle("Select Sudoku Game File");
        status = chooser.showOpenDialog(null);

        if(status == JFileChooser.APPROVE_OPTION)
        {
            try
            {
                File inFile = chooser.getSelectedFile();
                myBoard.newGame(inFile);    
            }
            catch(InputMismatchException e)
            {
                e.printStackTrace();
            } catch (NumberFormatException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        Scanner scanner = new Scanner(myBoard.toString()).useDelimiter(",|\r\n");
        for (int i=0; i < 9; i++) 
        {
               for (int j=0; j < 9; j++) 
               {
                   myBoard.setValueAt(i, j, scanner.nextInt());
                   add(new JTextField(String.valueOf(Board[i][j])));
               }
        }
    }        

    }
    @Override
    public void setValueAt(int r, int c, int v) throws InputOutOfRangeException, ValueNotValidException 
    {
        Board[r][c] = v;
    }

    @Override
    public int getValueAt(int r, int c) throws InputOutOfRangeException 
    {
        return 0;
    }

    @Override
    public int[] displayPossibleValues(int r, int c)throws InputOutOfRangeException 
    {
        return null;
    }

    public String toString()
    {
            return output;
    }

    @Override
    public void newGame(File gameFile) 
    {
        {
            try
            {
                output = new Scanner(gameFile).useDelimiter("\\Z").next();
            }
                 catch (FileNotFoundException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                 }
            }
    }    
}

1 个答案:

答案 0 :(得分:2)

由于static void main()不适用于Applet,因此它们具有与标准应用程序不同的入口点和生命周期。将初始化逻辑移至void init()

请参阅http://docs.oracle.com/javase/6/docs/api/java/applet/Applet.htmlhttps://www.google.com/search?q=java+applet+lifecycle

另外,你在这里混合AWT和Swing。应该使用JApplet代替Applet。