2016-11-24 7 views
0

Ich möchte die Höhe meines JFrame mit einem Klick auf eine Schaltfläche ändern.Ändern der Höhe von Jframe mit der Schaltfläche

Aber ich weiß nicht, wo ich anfangen soll. Ich habe nur einen Knopf und kenne den Code nicht.

* EDIT: Der Code, den ich kenne können die Größe der JFrame verändern und seine Position auf der rechten oberen Ecke bewegen, ist dies

Dimension screenSize = new Dimension(Toolkit.getDefaultToolkit().getScreenSize()); 
    setPreferredSize(new Dimension(311, 430)); 
    Dimension windowSize = new Dimension(getPreferredSize()); 
    int wdwLeft = 530 + screenSize.width/2 - windowSize.width/2; 
    int wdwTop = 0; 
    pack(); 
    jButton2.setEnabled(false); 
    setLocation(wdwLeft, wdwTop); 

Aber ich weiß nicht, spezifischen Code, der die Größe ändern können von JFrame

* EDIT2: Hier ist mein public static void main(String args[])

public static void main(String args[]) { 
    java.awt.EventQueue.invokeLater(new Runnable() { 
     public void run() { 
      final VoucherChecker frame = new VoucherChecker(); 
      frame.setVisible(true); 
     } 
    }); 
} 

ich weiß nicht, wie frame t nennen o verwenden Sie frame.setSize

+1

wo Ihre getestet Codes? – Sachith

+1

Ich habe keinen Code zum Testen. Aber ich weiß nur, dass ich die Höhe von Jframe im Init-Abschnitt ändern kann ... Ich werde die Frage aktualisieren –

+0

Das ist der Code, den ich weiß, kann die Größe von JFrame ändern. Aber es funktioniert nur auf init @Sachith –

Antwort

2

Code ausgeführt werden, wenn eine Taste gedrückt wird, ein ActionListener auf die Schaltfläche mit der .addActionListener() Methode hinzufügen. Werfen Sie einen Blick auf diesen Code hier, und sehen, ob das funktioniert für Sie: (die Kommentare lesen, um zu sehen, was auf geht)

import javax.swing.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

public class Main { 

    private JFrame frame; 

    public static void main(String[] args){ 

     SwingUtilities.invokeLater(new Runnable(){ 

      @Override 
      public void run() { 
       new Main();         //Create a Main object, wrapped by SwingUtilities.invokeLater to make it thread safe 
      } 
     }); 

    } 

    public Main() {           //Main's constructor 

     frame = new JFrame();        //Create JFrame 
     frame.setTitle("Test Frame"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     init((JPanel)frame.getContentPane());    //'init' frame's JPanel 
     setFrameSizeAndPos(frame);       //Set the frame's size 

     frame.setVisible(true); 
    } 

    private void setFrameSizeAndPos(JFrame frame) { 

     //Set JFrame size here! Eg: 
     frame.pack();          //Set the frame size, you could change this to set it in a different way. 
     frame.setLocationRelativeTo(null);     //Place frame in the center of the screen 
    } 

    private void init(JPanel panel) { 
     //Setup your GUI here... 
     JButton button1 = new JButton("Click me!");   //Create button 
     button1.addActionListener(new ActionListener(){  //add an ActionListener to the button, passing in an Anonymous Class 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       setFrameSizeAndPos(frame);     //This will be called then the button is pressed 
      } 
     }); 

     panel.add(button1); 

    } 
} 
+0

Vielen Dank für diesen Code geben 'privaten statischen JFrame Rahmen;' .. Ich benutze NetBeans und ich denke, sie liefern mir mit 'private void jButton3ActionPerformed (java.awt.event.ActionEvent evt)' so muss ich nicht 'addActionListener' darauf (Es wird bereits von den NetBeans bereitgestellt). Weil dieser Code, ich kann die 'frame' Variable auf meinem 'jButton3ActionPerformed' –

+1

@MArgus Happy verwenden, um zu helfen. :) Vergessen Sie nicht, eine Frage als beantwortet zu markieren, wenn Ihr Problem behoben ist. – Gulllie

1

Wenn Sie die Rahmengröße auf einen Knopf klicken möchten, dann können Sie dies versuchen.

import javax.swing.*; 
import java.awt.*; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

public class Run { 
    public static void main(String[] args) { 
     JFrame frame = new JFrame(); 
     frame.setTitle("Stackoverflow"); 


     JButton button = new JButton("Change Size"); 
     button.setVisible(true); 
     frame.getContentPane().add(button, BorderLayout.SOUTH); 

     frame.setSize(200, 200); 
     frame.setVisible(true); 

     button.addActionListener(new ActionListener() { 
      @Override 
      public void actionPerformed(ActionEvent e) { 
       /* now you can do some calculation that 
       how much you want to change 
       the frame size by the button click */ 

       // increasing hight by 50 
       frame.setSize(frame.getWidth(), frame.getHeight() + 50); 
      } 
     }); 
    } 
} 
+0

Ich habe ein kleines Problem .. Könnte etwas mit meinem Code sein .. Bitte lesen Sie die aktualisierte Frage. Ich werde meine 'public void run() 'einschließen –

+0

Warum schlagen Sie einem Neuling vor, einen MouseListener zu einem JButton hinzuzufügen? Wenn die JButton-Funktion deaktiviert ist, führt das Drücken der Taste zu einer Aktion? Sollte es? -1 für schlechte Beispiele und Ratschläge. –

+0

Wie auch immer, danke für die Bereitstellung der 'setSize' Informationen. Ich benutze NetBeans, also denke ich, NetBeans wird mir eine Funktion 'private void jButton3ActionPerformed (java.awt.event.ActionEvent evt)' und ich legte den 'setSize' Code darauf –

Verwandte Themen