Skip to Main Content

Java SE (Java Platform, Standard Edition)

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Refreshing my frame with new layout.How?

843805Apr 7 2007 — edited Apr 8 2007
Yo

I'm writting a sudoku game that loads with a predefined layout. example 6x6 board. I'm using gridlayout, but I also want to have an option where user can load other layout as well f.example 9x9 board. I'm using int as parameters to load the variables for the board. SO my big question is how do I redisplay the new grid. Do i use repaint(), revalidate() or validate()?

I'm not familiar with the rapaint()/validate/revalidatre() so I need a bit help

Here is my code(I have not included the classes for sudoku algoritm only the layut):
import java.io.*;
import javax.swing.*;
import javax.swing.filechooser.*;
import java.awt.*;
import java.awt.event.*;
import easyIO.*;
import java.util.*;

/*Kontroll klassen */
public class sudoku
{
    Utsyn vindu;
    In lesInn = new In();
    private String filnavn;
    JFileChooser fc;
    
    Brett brett = new Brett();
    

    int[][] brettFil;
    int[][]tomtBrett;

    int st�rrelse;
    Rad rad;
    Kolonne kol;
    Boks boks;
    Rute sudokuBrett;
    
    String faFilNavn()
    {
        filnavn = lesInn.inLine();
        return filnavn;
    }

    public sudoku() 
    {
        vindu = new Utsyn(this);
        //Create a file chooser
        fc = new JFileChooser();
    }
    
    public static void main(String[] args)
    {
        new sudoku();
    }
    
    /** Velg tekstfil det skal leses fra */
    public void velgFil()
    {
        int returnVal = fc.showOpenDialog(vindu);

        if (returnVal == JFileChooser.APPROVE_OPTION) 
        {
            File fil = fc.getSelectedFile();
            System.out.println("Du valgte filen: " + fil.getName());
            filnavn = fil.getName();
            //lesFraFil(faFilNavn());
            lesFraFil(filnavn);
            
        } 
        else 
        {
            System.out.println("Du trykket avbryt");
        }
    }
    
    void lesFraFil(String filnavn)
    {
        In fil = new In(filnavn);
        
        char A = 'A';
        char B = 'B';
        char C = 'C';
        char D = 'D';
        char E = 'E';
        char F = 'F';
        char G = 'G';

        
        int str = fil.inInt();
        System.out.println("St�rrelse " + str);

        int lengde = fil.inInt();
        System.out.println("Lengde " + lengde);

        int bredde = fil.inInt();
        System.out.println("Bredde " + bredde);
        System.out.println();

        brettFil = new int[str][str];
        
        rad = new Rad(str);
        kol = new Kolonne(str);
        boks = new Boks(lengde, bredde);

        for(int i=0; i<str; i++)
        {
            for(int j=0; j<str; j++)
            {
                
                char tegn = fil.nextChar();
                
                String tall = Character.toString(tegn); 
                System.out.print(tall); 
                                   
                    if(tall.equals("."))
                    tall = "0";
                
                    
                    if(tall.equals("" + A))
                        tall = "" + 10;
                    if(tall.equals("" + B))
                        tall = "" + 11;
                    if(tall.equals("" + C))
                        tall = "" + 12;
                    if(tall.equals("" + D))
                        tall = "" + 13;
                    if(tall.equals("" + E))
                        tall = "" + 14;
                    if(tall.equals("" + F))
                        tall = "" + 15;
                    if(tall.equals("" + G))
                        tall = "" + 16;
                    
                    Integer s = new Integer(tall);

                    brettFil[i][j] = s;
                   
                    sudokuBrett = new Rute(str,rad,kol,boks,brettFil);
                    
                     
            }
            System.out.println();
        }
        System.out.println();
        sudokuBrett.testAlleSiffer(0,0);
        vindu.createGrid(lengde, bredde);
    }
    

    
    
}

class Utsyn extends JFrame
{
    int lengde = 3; //height
    int bredde = 3; //width
    int storrelse = lengde * bredde;
    
    JButton avslutt, nesteLos, fraFil, visNesteRute;
    
    Oblig3 kontroll;// = new Oblig3();
    JFileChooser fc;
    
    public Utsyn(sudokukntrl)
    {
        super("Sudoku");
        this.lengde = lengde;
        this.bredde = bredde;
        System.out.println("Kommer hit");
        //kontroll = new Oblig3();
        kontroll = kntrl;
        fc = new JFileChooser();
        
        
        /* Oppretter knappene **/
        avslutt = new JButton("Avslutt");
        nesteLos = new JButton("Neste l�sning");
        fraFil = new JButton("Les fra fil");
        visNesteRute = new JButton("Vis neste rute");
        
        JPanel knapper = new JPanel();
        knapper.add(fraFil);
        knapper.add(visNesteRute);
        knapper.add(nesteLos);
        knapper.add(avslutt);
        
        fraFil.addActionListener(new KnappLytter());
        avslutt.addActionListener(new KnappLytter());
        
        /* Legger til elementene p� de ulike panelene */
        add(knapper, BorderLayout.SOUTH);
        add(createGrid(lengde, bredde), BorderLayout.CENTER);
        
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //pack();
        setSize(420,400);
        setVisible(true);
        

        /** Finner skjermst�rrelsen */
        Toolkit toolkit = Toolkit.getDefaultToolkit();
        Dimension screenSize = toolkit.getScreenSize();

        /** Kalkulerer skjerm og programvindu st�rrelsen */
        int x = (screenSize.width - this.getWidth()) / 2;
        int y = (screenSize.height - this.getHeight()) / 2;
        
        /** Setter ny posisjon p� skjermen */
        this.setLocation(x, y);
    }
    
    /** Metode som oppretter brettet. Starter med 6x6 brett som standard */
    JPanel createGrid(int lengde, int bredde) // I also call this method to repaint the layout but with different parameters
    {
        int storrelse = bredde * lengde;
        int antallRuterTot = storrelse * storrelse;
        JTextField numbers[] = new JTextField[antallRuterTot];
        
        /* Oppretter rutene **/
        JPanel ruterOut = new JPanel();
        ruterOut.setLayout(new GridLayout(bredde, lengde, 0, 0 ));
        
        
        for (int i=0; i<storrelse; i++) 
        {
            JPanel ruter = new JPanel ();
            ruter.setLayout(new GridLayout(lengde, bredde, 0, 0));
            ruter.setBorder(BorderFactory.createLineBorder(Color.blue));
            for (int ii=0; ii<storrelse; ii++) 
            {
                ruter.add (numbers[i * storrelse + ii] = new JTextField (2));
                numbers[i * storrelse + ii].setHorizontalAlignment (JTextField.CENTER);
            }
            
            
            //add(ruter, BorderLayout.CENTER);
            System.out.println("Rute " + i + " lagt til");
            ruterOut.add(ruter);
        }
        return ruterOut;
    }
   
    class KnappLytter implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            if(e.getSource() == avslutt)
            {
                System.out.println("Avslutter...");
                System.exit(0);
                
            }
            else if(e.getSource() == fraFil)
            {
                System.out.println("Du leser fra fil");
                kontroll.velgFil();
                validate(); //Should I revalidate here??????????? or where
                
            }    
        }
    }
    
    boolean oppdater = true;
    
    
    void oppdater(boolean oppdater)
    {
        this.oppdater = oppdater;
    }    
}
Message was edited by:
PhpDude
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on May 6 2007
Added on Apr 7 2007
2 comments
88 views