• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

soulbe

Simular windowClosed (Ajuda)

6 mensagens neste tópico

Boa tarde,

estou a fazer um jogo em java trabalhando com GUI e a minnha dúvida está em como simular no meu código o fecho de uma janela sem ter fechado a janela ou seja, sem ter activado nenhum WindowListener...O objectivo é quando faço novo jogo fazer dispose da janela actual e iniciar uma nova, o que até agora nao percebi como fazer.

Agradeço a quem me puder esclarecer.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não estou a ver forma de fazeres isso, sem invocares o método dispose(), mas isso pode levar a que a janela desapareça.

Já agora, porque queres fazer isso? Não pode simplesmente reiniciar os componentes que precisas? Porquê remover uma janela, e voltar a criá-la quando ela já está criada?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O meu objectivo seria mesmo remover um painel que coloquei ao centro e actualizá-lo com o novo que ia ser carregado. Só que a minha implementação está a trabalhar de forma a que quando faço novo jogo ele cria uma nova janela e eu nao sou capaz de apagar a que está por trás.ta claro que o dispose encerra a que se encontra por tras...mas nao estou a conseguir torná-lo efectivo. Tenh uma classe que constroi o meu Layout da janela e outra que me coloca os botões. ao iniciar o programa ele abre logo o jogo em branco, e quando faço new game na classe dos botões ele cria uma nova classe janela ...talvez deva fazer uma nova abordagem à questão e pensar numa alternativa...até fiz um getWindow para buscar a janela que se encontrava por tras e fiz dispose e nada...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

public class SudokuGUI extends JFrame{

private JPanel painelEsq,painelCtr, painelDto,painelNt,painelSul;

public SudokuGUI(){

painelCtr=new JPanel();

painelCtr.add(new Grelha());

gui();

}

public SudokuGUI(String str){

painelCtr=new JPanel();

painelCtr.add(new Grelha(str));

gui();

}

public void gui(){

painelEsq=new JPanel();

painelDto=new JPanel();

painelNt=new JPanel();

painelSul=new JPanel();

setLayout(new BorderLayout());

painelDto.add(new JLabel("Direito"));

painelNt.add(new JLabel("Topo"));

painelSul.add(new South());

add(painelEsq,BorderLayout.WEST);

add(painelDto,BorderLayout.EAST);

add(painelCtr,BorderLayout.CENTER);

add(painelNt,BorderLayout.NORTH);

add(painelSul,BorderLayout.SOUTH);

pack();

setVisible(true);

setDefaultCloseOperation(3);

setLocationRelativeTo(null);

setResizable(false);

}

}

public class South extends JComponent implements MouseListener,ActionListener{

private JPanel painelCtr;

JTextField T = new  JTextField(2);

int dif = 1;

public South(){

T.setText("" + dif);

painelCtr=new JPanel();

JButton novoJogo=new JButton("New Game");

JButton dificuldade=new JButton("Dificuldade");

novoJogo.addActionListener(this);

dificuldade.addActionListener(this);

setLayout(new FlowLayout());

add(novoJogo);

add(dificuldade);

add(T);

}

public int getDificuldade(){

return dif;

}

public void actionPerformed(ActionEvent e) {

if(e.getActionCommand().equals("New Game")){

BufferedReader read=null;

String map="";

StringBuffer mapa = new StringBuffer();

mapa.append("mapa").append(dif).append(".txt");

try{

read=new BufferedReader(new FileReader(mapa.toString()));

}

catch(FileNotFoundException ex){

JOptionPane.showMessageDialog(this,"File not Found","error message",JOptionPane.PLAIN_MESSAGE);

}

try{

map = read.readLine();

new SudokuGUI(map);

}

catch(IOException ex){

}

}

if(e.getActionCommand().equals("Dificuldade")){

dif++;

T.setText("" + dif);

if (dif == 5)

dif = 0;

}

}

public void mouseClicked(MouseEvent e) {

Object src = e.getSource();

Buttons bt=(Buttons)src;

bt.setBorder(new BevelBorder(1));

}

public void mouseEntered(MouseEvent e) {

Object src = e.getSource();

((Buttons)src).setBackground(Color.GRAY);

}

public void mouseExited(MouseEvent e) {

Object src = e.getSource();

((Buttons)src).setBackground(Color.LIGHT_GRAY);

}

public void mousePressed(MouseEvent e) {

// TODO Auto-generated method stub

}

public void mouseReleased(MouseEvent e) {

Object src = e.getSource();

((Buttons)src).setBorder(new BevelBorder(0));

}

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Talvez quando criar um Novo sudokuGUI em vez de fazer o método gui() novamente so deveria adicionar um novo painel central...é que é a primeira vez que trabalho com ambientes gráficos e ainda sou um bocado fresco nisto...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora