Boa tarde!
Pessoal é o seguite tenho uma view que chama outra view.
Porém gostaria que a 1a view não pudesse ser clicada até a 2a view ser fechada ou cancelada como eu poderia fazer isso?
Boa tarde!
Pessoal é o seguite tenho uma view que chama outra view.
Porém gostaria que a 1a view não pudesse ser clicada até a 2a view ser fechada ou cancelada como eu poderia fazer isso?
Crie a segunda view como uma caixa de diálogo modal.
Use a classe JDialog
Mas eu posso colocar botões,tabelas e varios outros componentes dentro de um JDialog.
E roger_rf a minha view já esta criada tem como eu fazer esse MODAL que você falou alterando alguma propriedade dentro do Netbeans?
Desde já agradeço pela atenção
No designer do NetBeans você poderia marcar a propriedade modal, caso se trate de um JDialog ou um Dialog. Porém, o ideal é ajustar essa propriedade no construtor:
http://java.sun.com/javase/6/docs/api/javax/swing/JDialog.html#JDialog(java.awt.Dialog,%20boolean)
Mas eu posso colocar botões,tabelas e varios outros componentes dentro de um JDialog.E roger_rf a minha view já esta criada tem como eu fazer esse MODAL que você falou alterando alguma propriedade dentro do Netbeans?
Desde já agradeço pela atenção
Pode-se adicionar todos esses componentes que voce citou sim.
Bah pessal não estou conseguindo entender como passar isso pra MODAL
Desculpa aew pela dúvida.
Valeu
Bah pessal não estou conseguindo entender como passar isso pra MODALDesculpa aew pela dúvida.
Valeu
Quer dizer que você deve criar uma classe que extenda a JDialog. Geralmente se cria os formulários extendidos da classe JFrame mas esta classe ainda não possui implementação para que impeça o acesso a outras janelas.
Boa noite pessoal;
Simples basta passar o parâmetro “true” dentro do construtor para a janela ficar Modal, desta forma:
...
public class MinhaCaixaDialog extends JDialog {
public MinhaCaixaDialog(JFrame frame, String title){
super(frame, title, true);
....
}
}
Observações: O JDialog só permite frames Modais dentro da Aplicação Java, ou seja, se voce clicar fora do JDialog, porém dentro do Frame Principal ou de outro frame de sua aplicação, então o Modal funcionará, entretanto, se a janela do Frame Principal foi menor que a resolução de tela do Windows, e voce clicar fora da aplicação, neste caso, o foco passa o controle para o Sistema Operacional e o modal não funcionará neste caso. Portanto, recomendo que voce utilize um Frame Principal que tome toda a janela do Windows.
Bom tentei as dicas que vocês me deram mas não consegui (acho que por incompetência minha)
mas segue o codigo do meu Jframe para mostrar como estou fazendo.
package br.com.nautec.flowtracklite.view;
import br.com.nautec.flowtracklite.control.FileConfig;
import br.com.nautec.flowtracklite.model.dto.EventSensor;
import br.com.nautec.flowtracklite.model.dto.Sensor;
import br.com.nautec.flowtracklite.model.dto.SensorPk;
import br.com.nautec.flowtracklite.model.exceptions.EventSensorDaoException;
import br.com.nautec.flowtracklite.model.exceptions.SensorDaoException;
import br.com.nautec.flowtracklite.model.factory.EventSensorDaoFactory;
import br.com.nautec.flowtracklite.model.factory.SensorDaoFactory;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.ParseException;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JOptionPane;
import org.jdesktop.application.Action;
/**
*
* @author naueng2
*/
public class CalibrateView extends javax.swing.JFrame {
private Date dt;
private int sens;
ApplicationView app = ApplicationView.getInstance();
/** Creates new form CalibrateView */
private CalibrateView() {
initComponents();
Aferir.setEnabled(false);
Calc.grabFocus();
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new CalibrateView().setVisible(true);
}
});
}
public JFormattedTextField getServ() {
return Serv;
}
public void setServ(JFormattedTextField Serv) {
this.Serv = Serv;
}
public JButton getCalibrar() {
return Calibrar;
}
public void setCalibrar(JButton Calibrar) {
this.Calibrar = Calibrar;
}
public Date Calibrate(Date dt) throws ParseException {
this.dt = dt;
return this.dt;
}
public JFormattedTextField getCalc() {
return Calc;
}
public void setCalc(JFormattedTextField Calc) {
this.Calc = Calc;
}
public JButton getAferir() {
return Aferir;
}
public void setAferir(JButton Aferir) {
this.Aferir = Aferir;
}
@Action
public void Correction() {//corretion
if (Calc.getText().trim().equals("") || Serv.getText().trim().equals("")) {
JOptionPane.showMessageDialog(null, "Digite valor servido");
} else {
try{
float vlCalc = Float.parseFloat(Serv.getText().replace(",", "."));
float porcenMenos = (vlCalc * 10) / 100; // valor 10% menor do que o servido
float porcenMais = ((vlCalc * 10) / 100) + vlCalc; // valor 10% maior do que o servido
float vlMed = Float.parseFloat(Calc.getText().replace(",", "."));
if (vlMed < porcenMenos || vlMed > porcenMais) {// se o valor servido for 10% maior ou menor
//do que o servido então não é calibrado e emite a mensagem.
JOptionPane.showMessageDialog(null, "Valor fora da taxa de tolerância");
} else {
int selectedOption = JOptionPane.showConfirmDialog(null, "Confirmar Calibração?",
"Por favor, confirme:", JOptionPane.YES_NO_OPTION);
if (selectedOption == JOptionPane.YES_OPTION) {
try {
Sensor sensor;
float correction = 0;
sensor = SensorDaoFactory.create().findWhereAddressEquals(sens);
if (sensor.getCorrection() > 0) {
correction = (vlMed * sensor.getCorrection()) / vlCalc;
} else {
correction = vlMed / vlCalc;
}
sensor = SensorDaoFactory.create().findWhereAddressEquals(sens);
sensor.setCorrection(correction);
String data = new java.text.SimpleDateFormat("dd/MM/yyyy").format(new java.util.Date(System.currentTimeMillis()));
FileConfig.getInstance().setStatus(sens - 100, data);
FileConfig.getInstance().writeFile();
SensorPk pk = new SensorPk(sensor.getId());
SensorDaoFactory.create().update(pk, sensor);
} catch (SensorDaoException ex) {
Logger.getLogger(CalibrateView.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}catch (NumberFormatException ex){
JOptionPane.showMessageDialog(null,"Digite número válido");
Calc.setText("");
}}
}
@Action
public void Cancel() {
CalibrateView.this.dispose();
}
public void Fim() throws ParseException {
EventSensor[] es;
float total = 0;
try {
es = EventSensorDaoFactory.create().findCalibrate(sens, dt);
for (int i = 0; i < es.length; i++) {
if (es[i].getCorrection() > 0) {
total = ((es[i].getPulse() / 6100f) * es[i].getCorrection());
} else {
total = ((es[i].getPulse() / 6100f));
}
System.out.println("Número não arrendondado= " + total);
BigDecimal valorExato = new BigDecimal(total).setScale(2, RoundingMode.HALF_DOWN);
System.out.println(" Número arrendondado = " + valorExato);
Serv.setText(valorExato.toString()+ "0");
Calibrar.setEnabled(true);
Aferir.setEnabled(true);
}
} catch (EventSensorDaoException ex) {
Logger.getLogger(CalibrateView.class.getName()).log(Level.SEVERE, null, ex);
}
}
@Action
public void Gauge() {
int selectedOption = JOptionPane.showConfirmDialog(null, "Confirmar Aferição?",
"Por favor, confirme:", JOptionPane.YES_NO_OPTION);
if (selectedOption == JOptionPane.YES_OPTION) {
String data = new java.text.SimpleDateFormat("dd/MM/yyyy").format(new java.util.Date(System.currentTimeMillis()));
FileConfig.getInstance().setFericao((sens - 100), data);
FileConfig.getInstance().writeFile();
}
}
/**
*
* @return
*/
public static synchronized CalibrateView getInstance() {
return CalibrateViewHolder._Instance;
}
public void Sensor(int sens) {
this.sens = sens;
}
/**
*
*/
final static class CalibrateViewHolder {
final static CalibrateView _Instance = new CalibrateView();
}
Desde já agradeço a todos
Ali a classe tá herdando de JFrame… Faz ela herdar de JDialog
Daí faz o construtor que nem o discorpio falou…