mam taki problem mam główne okno programu w którym mogę włączyć programy które się otwierają w kolejnych oknach. jak wyłączam program w który otworzył się w kolejnym okienku przez naciśnięcie x to wyłącza mi się też główny program. pomożecie ?
Pomożemy. W tych kolejnych oknach zamień
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//na
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
Lepszym rozwiązaniem jest otwieranie programów w oknach typu JDialog
, a nie JFrame
.
kurcze nie mam tego w tych oknach
przykład kodu z okna:
import com.sun.java.accessibility.util.SwingEventMonitor;
import static com.sun.java.accessibility.util.SwingEventMonitor.addChangeListener;
import static java.lang.Double.parseDouble;
import javafx.collections.SetChangeListener;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
public class Temperatura extends javax.swing.JFrame {
public Temperatura() {
initComponents();
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
bindingGroup = new org.jdesktop.beansbinding.BindingGroup();
jScrollBar1 = new javax.swing.JScrollBar();
jSlider2 = new javax.swing.JSlider();
jSlider1 = new javax.swing.JSlider();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jSlider2.setMajorTickSpacing(30);
jSlider2.setMaximum(373);
jSlider2.setMinorTickSpacing(5);
jSlider2.setPaintLabels(true);
jSlider2.setPaintTicks(true);
jSlider2.setValue(0);
jSlider2.setEnabled(false);
org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, jSlider2, org.jdesktop.beansbinding.ELProperty.create("10"), jSlider2, org.jdesktop.beansbinding.BeanProperty.create("majorTickSpacing"));
bindingGroup.addBinding(binding);
jSlider2.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jSlider2StateChanged(evt);
}
});
jSlider1.setMajorTickSpacing(20);
jSlider1.setMinimum(-273);
jSlider1.setMinorTickSpacing(5);
jSlider1.setPaintLabels(true);
jSlider1.setPaintTicks(true);
jSlider1.setToolTipText("");
binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, jSlider1, org.jdesktop.beansbinding.ELProperty.create("30"), jSlider1, org.jdesktop.beansbinding.BeanProperty.create("majorTickSpacing"));
bindingGroup.addBinding(binding);
jSlider1.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
jSlider1StateChanged(evt);
}
});
jLabel1.setText("Celsjusz:");
jLabel2.setText("Kelwin:");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(23, 23, 23)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(jSlider2, javax.swing.GroupLayout.DEFAULT_SIZE, 688, Short.MAX_VALUE)
.addComponent(jSlider1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addGroup(layout.createSequentialGroup()
.addGap(87, 87, 87)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGap(93, 93, 93)
.addComponent(jLabel2)))
.addContainerGap(43, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(58, 58, 58)
.addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 44, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jSlider1, javax.swing.GroupLayout.PREFERRED_SIZE, 63, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(jLabel2)
.addGap(16, 16, 16)
.addComponent(jSlider2, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(50, Short.MAX_VALUE))
);
bindingGroup.bind();
pack();
}// </editor-fold>
private void jSlider1StateChanged(javax.swing.event.ChangeEvent evt) {
double tempC = jSlider1.getValue();
jLabel1.setText("Celsjusz: " + tempC);
double tempF = tempC + 273;
jLabel2.setText("Fahrenheit: " + tempF);
jSlider2.setValue((int) tempF);
}
private void jSlider2StateChanged(javax.swing.event.ChangeEvent evt) {
// TODO add your handling code here:
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new Temperatura().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JScrollBar jScrollBar1;
private javax.swing.JSlider jSlider1;
private javax.swing.JSlider jSlider2;
private org.jdesktop.beansbinding.BindingGroup bindingGroup;
// End of variables declaration
}
??? A co to jest
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
Kod umieszczaj w znacznikach "kolorujących", użyj ostatniego przycisku po prawej na pasku narzędzi.
jak dobrze rozumiem, wstawiam ten kod po prawej stronie w zakładce events, windows closing ?
bo tak wstawiłem w dwóch kolejnych oknach i jedno nie zamyka głównego okna, czyli działa poprawnie, ale drugie już okno zamyka też główne okno:(
Nie znam designera z NetBeans. Nie kombinuj z zakładkami, tylko zamień słowo EXIT
na DISPOSE
.
no ok z checią zmienię, ale nie mam tego słowa nigdzie w tym swingu ani w kodzie to gdzieś jest zaszyte ale nie wiem gdzie
ok juz sobie poradzilem, dzięki