Écouter JFrame redimensionner les événements que l'utilisateur fait glisser la souris?

Lorsqu'un utilisateur clique sur le coin d'une JFrame pour la redimensionner et la fait glisser la souris autour de, la JFrame redessine fonction de la position actuelle de la souris que l'utilisateur fait glisser. Comment pouvez-vous écouter à ces événements?

Ci-dessous est ce que j'ai actuellement essayé:

public final class TestFrame extends JFrame {
    public TestFrame() {
        this.addComponentListener(new ComponentAdapter() {
            public void componentResized(ComponentEvent e) {
                //This is only called when the user releases the mouse button.
                System.out.println("componentResized");
            }
        });
    }

    //These methods do not appear to be called at all when a JFrame
    //is being resized.
    @Override
    public void setSize(int width, int height) {
        System.out.println("setSize");
    }

    @Override
    public void setBounds(Rectangle r) {
        System.out.println("setBounds A");
    }

    @Override
    public void setBounds(int x, int y, int width, int height) {
        System.out.println("setBounds B");
    }
}

Comment puis-je déterminer et limiter la façon dont l'utilisateur redimensionne une fenêtre (basé sur les proportions de la fenêtre), car ils sont de glisser la souris autour d'?

  • pouvez-vous s'il vous plaît préciser la raison de votre Générosité, parce que je vois la différence entre Java_1.4 et Java_1.5, mais je ne peux pas trouvé la diference pour Java_6, note mais sans plus profond de l'enregistrement dans Nested et Inherits Method
  • J'ai essayé les deux méthodes (ComponentListener sur un Composite; Remplacer valider.) Le code compile et s'exécute sous les deux versions de Java, mais dans la version 1.6 de Java la mise en page est recalculé en permanence, mais en Java 1.5 uniquement lorsque je relâchez la souris.
  • êtes-vous redimensionner JComponent ou JFrame
  • Je suis le redimensionnement de la JFrame avec la souris, et comme il a un BorderLayout le composant (avec BorderLayout.CENTER) devraient suivre.
  • ComponentResizer par @camickr tips4java.wordpress.com/2009/09/13/resizing-components serait de Java5 de l'âge,
  • juste à l'idée de vous essayé de retarder les événements de componentResized(ComponentEvent e) à l'aide de javax.swing.Minuterie, avis jusqu'à redimensionner se termine, vous devez Minuterie#restart(), parce que vous ne savez jamais si redimensionner extrémités, si redimensionner les extrémités, puis le feu de l'Action à partir de la Minuterie
  • êtes-vous confus de cette question avec le stackoverflow.com/questions/6738664/... ? C'est exactement le problème inverse. Je veux componentResized d'être appelé en permanence, mais il ne l'est pas.
  • Je pense que c'confondre façon est safiest (MsOffice, Lecteur Multimédia en attente ...de Mozilla par exemple ne pas, qui ont des problèmes avec l'Anticrénelage et le Rendu des Polices, des cercles et des Lignes au cours de redimensionner)

InformationsquelleAutor Clinton | 2010-01-21