2016-04-16 5 views
0

Ich werde meinen Punkt mit den Bildern unten erklären:Wie ändert man die Größe eines JFrames, so dass die Komponenten je nach Benutzer auch größer oder kleiner werden?

dieses Beispiel das Projekt ausgeführt wird:

http://i.stack.imgur.com/s1nLH.png

Wie Sie sehen die Benutzer re Größe der Rahmen ist, die dann nicht die Komponenten selbst nicht erweitern sondern füllt sie mit einer grauen Farbe:

http://i.stack.imgur.com/kdNA3.png

ich würde gerne wissen, wie Größe wieder die JFrame machen th e Komponenten innerhalb der Rahmen erweitern oder reduzieren in der Größe je nach Benutzer.

Hier ist die Hauptklasse dieses Programms, ich benutze GridBag-Layout und bevor jemand darauf hinweist, verstehe ich die SetSize-Funktion kann von den Managern überschrieben werden, erst nach der Codierung dieses Programms realisiert.

Bitte beachten Sie, dies ist in der Tat für ein Projekt, und dies ist nur ein anderes vorheriges Programm, das ich verwendet habe, würde ich nur gerne wissen, wie es geht.

public class Email{ 

    public static void main(String[] args) { 
     // The GUI thread is created, with the JFrame in the run method 
     SwingUtilities.invokeLater(new Runnable(){ 

      public void run(){ 

       JFrame frame = new Compose("Send an Email"); 
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
       frame.setSize(700 , 600); 
       // This stops the program from being resized 
       frame.setResizable(true); 
       frame.pack(); 
       frame.setVisible(true); 
      } 
     }); 
    } 

} 
+0

Verwendung Flow in Ihrem Design Sie das Design oder Gebäude aus dem IDE-Codierung sind – Priyamal

+0

ich nicht bin mit GUI-Builder oder irgendetwas davon, Codierung von Hand. Die Verwendung von flowLayout ist auch nicht ideal für mein Programm, außer wenn ich den Bildschirm maximiere, fügt er sie nur der ersten Zeile hinzu und passt die Größe nicht entsprechend an. – MedicoreProgrammer

Antwort

2

Sieht aus wie Sie die GridBagLayout verwenden. Sie müssen also Ihre Einschränkungen ändern, um den gewünschten Effekt zu erzielen.

Überprüfen Sie den Abschnitt aus dem Swing-Tutorial auf How to Use GridBagLayout.

Insbesondere müssen Sie sich die Gewichts-/Gewichtsbeschränkungen anschauen. Dies teilt dem Layout mit, wie Speicherplatz bei der Änderung der Rahmengröße zugewiesen wird. Da Ihre Werte 0 sind, wird keine Größe der Komponenten geändert und die Komponenten werden in der Mitte angezeigt. Ich würde vermuten, dass das Textfeld verkleinert werden soll.

Also lesen Sie das Tutorial, laden Sie den Demo-Code herunter und spielen Sie damit. Dann ändern Sie Ihr Layout, um zu tun, was Sie wollen.

+0

Richtig, damit mein Inhaltsbereich ein Rahmenlayout mit meinen anderen Bereichen verwendet und einige andere Layouts verwendet. Wie würde ich dann vorgehen? – MedicoreProgrammer

+1

Lesen Sie das Tutorial. Es erklärt, wie ALLE Layout-Manager arbeiten. Deshalb habe ich Sie auf das Tutorial hingewiesen. Sie lernen zuerst die Grundlagen jedes Layout-Managers. Sie verschachteln Ihre Panels und verwenden geeignete Layout-Manager. Basierend auf den Bildern, die Sie gepostet haben, sieht es so aus, als ob Sie ein GridBagLayout verwenden. Aus diesem Grund habe ich vorgeschlagen, dass Sie dort anfangen sollten. Basierend auf dem Bild schlage ich vor, Sie können es leicht mit dem GridBagLayout tun. Ich habe keine Ahnung, welche anderen Layouts du verwendest, also kann ich offensichtlich nicht sagen, was du tust, weil ich kein Gedankenleser bin. – camickr

+0

Sie sind kein Gedankenleser, aber wie ich bereits sagte, verwende ich Border-Layout für mein anderes Programm und wollte etwas Bestimmtes dazu. – MedicoreProgrammer

0
import javax.swing.JFrame; 
import javax.swing.JLabel; 


public class emailjava extends JFrame{ 

    public emailjava(){ 
    adjustFrame(); 
    } 




    /** 
    * variable declaration 
    **/ 
    private final javax.swing.JLabel bccLbl= new javax.swing.JLabel(); 
    private final javax.swing.JTextField bccText= new javax.swing.JTextField(); 
    private final javax.swing.JTextField ccTExt= new javax.swing.JTextField(); 
    private final javax.swing.JLabel jLabel1= new javax.swing.JLabel(); 
    private final javax.swing.JLabel jLabel2= new javax.swing.JLabel(); 
    private final javax.swing.JPanel jPanel1 = new javax.swing.JPanel(); 
    private final javax.swing.JScrollPane jScrollPane1 = new javax.swing.JScrollPane(); 
    private final javax.swing.JLabel messageLbl= new javax.swing.JLabel(); 
    private final javax.swing.JTextArea messageText = new javax.swing.JTextArea(); 
    private final javax.swing.JLabel subjectLbl= new javax.swing.JLabel(); 
    private final javax.swing.JTextField subjectText= new javax.swing.JTextField(); 
    private final javax.swing.JTextField toText= new javax.swing.JTextField(); 
    //emd of the declaration 

    public final void adjustFrame(){ 

     setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 


     JLabel []array = {jLabel1,jLabel2,bccLbl,subjectLbl,messageLbl}; 
     for (JLabel jLabel : array) { 
      jLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT); 
     } 

     jLabel1.setText("To :"); 
     jLabel2.setText("CC :"); 
     bccLbl.setText("BCC :"); 
     subjectLbl.setText("SubjectLine"); 
     messageLbl.setText("MessageBody"); 

     messageText.setColumns(20); 
     messageText.setRows(5); 
     jScrollPane1.setViewportView(messageText); 

     javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); 
     jPanel1.setLayout(jPanel1Layout); 
     jPanel1Layout.setHorizontalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addComponent(jLabel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
        .addComponent(messageLbl, javax.swing.GroupLayout.DEFAULT_SIZE, 77, Short.MAX_VALUE) 
        .addComponent(subjectLbl, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
        .addComponent(bccLbl, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
        .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) 
       .addGap(5, 5, 5) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addComponent(toText) 
        .addComponent(ccTExt) 
        .addComponent(bccText) 
        .addComponent(subjectText) 
        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 391, Short.MAX_VALUE)) 
       .addContainerGap()) 
     ); 
     jPanel1Layout.setVerticalGroup(
      jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addGroup(jPanel1Layout.createSequentialGroup() 
       .addGap(35, 35, 35) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addComponent(toText, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addComponent(ccTExt, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(jLabel2, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addComponent(bccText, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(bccLbl, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addComponent(subjectText, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE) 
        .addComponent(subjectLbl, javax.swing.GroupLayout.PREFERRED_SIZE, 26, javax.swing.GroupLayout.PREFERRED_SIZE)) 
       .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) 
       .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 295, Short.MAX_VALUE) 
        .addGroup(jPanel1Layout.createSequentialGroup() 
         .addComponent(messageLbl, javax.swing.GroupLayout.PREFERRED_SIZE, 29, javax.swing.GroupLayout.PREFERRED_SIZE) 
         .addGap(0, 0, Short.MAX_VALUE)))) 
     ); 

     javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); 
     getContentPane().setLayout(layout); 
     layout.setHorizontalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     ); 
     layout.setVerticalGroup(
      layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) 
      .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 
     ); 

     pack(); 

    } 

    public static void main(String[] args) { 
     new emailjava().setVisible(true); 
    } 

} 

Dies ist der Code, den ich mit versucht, es mir selbst kam und es funktioniert 100%

+1

Vielen Dank, für Ihre Zeit werde ich mir das ansehen. – MedicoreProgrammer

Verwandte Themen