κλείνοντας JFrame μου χωρίς να χρησιμοποιήσετε το κουμπί κλεισίματος (Χ) και για την περάτωση της JVM

ψήφοι
2

Έχω ένα πλαίσιο που αρχικοποιεί ένα άλλο πλαίσιο, αλλά δεν θέλω να χρησιμοποιήσετε το κουμπί κλεισίματος (x) στο αρχικοποιείται πλαισίου., γι 'αυτό δημιούργησε ένα κουμπί. Πώς μπορώ να κώδικα που αυτό το κουμπί μπορεί να χρησιμοποιηθεί για να κλείσει το τεκμηριώθηκε πλαίσιο χωρίς να κλείνετε το JVM.

Δημοσιεύθηκε 09/12/2008 στις 19:16
πηγή χρήστη
Σε άλλες γλώσσες...                            


6 απαντήσεις

ψήφοι
5

Έχοντας το δικό σας κουμπί κλεισίματος είναι παράξενο UI και θα πρέπει να αποφεύγεται.

Για να απαλλαγείτε από ένα πλαίσιο όταν το δικό σας κάνετε κλικ στο κουμπί που μπορείτε να κάνετε απλά:

jFrame.setVisible(false);

ή

jFrame.dispose();

αν θέλετε να απαλλαγείτε από αυτό εντελώς.

Σε πλαίσια που δεν θέλετε να βγείτε από το JVM στο κουμπί κλεισίματος να κάνετε κλικ προσδιορίζει:

jFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

ή

jFrame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE);

Ανάλογα με το ποια από τη συμπεριφορά που θέλετε.

Απαντήθηκε 10/01/2009 στις 09:55
πηγή χρήστη

ψήφοι
0

Θα μπορούσατε να δοκιμάσετε το SetVisible () ή να διαθέτει () λειτουργίες

Για κύρια τάξη σας ...

    public class Main {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    //new DemoTryCatch()
    new Frame1();
}

}

Για την πρώτη κατηγορία το πλαίσιό σας ...

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;


public class Frame1 extends JFrame{
JButton newFrame=new JButton("Frame 2");
public Frame1() {
    // TODO Auto-generated constructor stub
    super("Frame 1");
    add(newFrame);
    setVisible(true);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setSize(300,300);
    newFrame.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent arg0) {
            // TODO Auto-generated method stub
            new Frame2();\\instantiating your new Frame
        }
    });
}
}

Για την τεκμηριώθηκε πλαίσιο ...

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;


public class Frame2 extends JFrame{

JButton CloseFrame2=new JButton("CloseFrame2");
public Frame2() {
    // TODO Auto-generated constructor stub
    super("Frame 1");
    add(CloseFrame2);
    setVisible(true);
    setDefaultCloseOperation(DISPOSE_ON_CLOSE);
    setSize(300,300);
    CloseFrame2.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            // TODO Auto-generated method stub
            setVisible(false);\\You could also use dispose()
        }
    });
}
}
Απαντήθηκε 16/06/2014 στις 10:53
πηγή χρήστη

ψήφοι
0

Συμφωνώ με τον Tom, νομίζω ότι στον κώδικα που έγραψε:

[framename].setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

EXIT_ON_CLOSE σημαίνει ότι θα βγείτε από την εφαρμογή εντελώς.

Μπορείτε να κλείσετε το παράθυρο κάνοντας κλικ στο κουμπί X της με τη χρήση:

[framename].setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

Εδώ είναι ένα δείγμα κώδικα:

package answers;

import javax.swing.JFrame;

public class Answers {

    public static void main(String[] args) {

        //frame 1
        JFrame frame1 = new JFrame("this is frame 1");
        frame1.setSize(500, 500);
        frame1.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        frame1.setLocationRelativeTo(null); // ignore this its just to place frame 1 on the center

        //now this is the code for frame2
        //frame 2
        JFrame frame2 = new JFrame("this is frame 2");
        frame2.setSize(500, 500);
        frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        frame1.setVisible(true);
        frame2.setVisible(true);

    }

}
Απαντήθηκε 31/01/2014 στις 15:16
πηγή χρήστη

ψήφοι
0

Θα μπορούσατε να χρησιμοποιήσετε setVisible(false)για να απλά να κρύψει την τεκμηριώθηκε JFrame από την προβολή

Απαντήθηκε 22/10/2013 στις 01:52
πηγή χρήστη

ψήφοι
0

Χρησιμοποίησε αυτό:

jFrame.setUndecorated(true);
jFrame.getRootPane().setWindowDecorationStyle(JRootPane.NONE);
Απαντήθηκε 16/11/2009 στις 16:46
πηγή χρήστη

ψήφοι
-1

Δεν είμαι σίγουρος αν im δεξιά, αλλά θα μπορούσατε να καλέσετε dispose(). Το javadoc προτείνει μπορείτε να το ανοίξετε ξανά αν χρησιμοποιείτε show().

Απαντήθηκε 12/07/2013 στις 00:05
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more