2017-11-02 7 views
1

Ich habe ein einfaches Swing-Programm gemacht, um den Textbereich und eine Schaltfläche darunter anzuzeigen, aber selbst nach der Verwendung von setBounds() wird die Schaltfläche über dem vollen Rahmen angezeigt. Hier ist mein Code-Die Größe der Komponenten kann nicht korrekt eingestellt werden

import javax.swing.*; 

class Exp2 
{ 
    public static void main(String... s) 
    { 
    JFrame jf=new JFrame("Exec"); 
    JTextArea jtv=new JTextArea("Hello World"); 
    jtv.setBounds(5,5,100,60); 
    JButton jb=new JButton("click"); 
    jb.setBounds(40,160,100,60); 
    jf.add(jtv); 
    jf.add(jb); 
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    jf.setSize(500,500); 
    jf.setResizable(false); 
    jf.setVisible(true); 
    } 
} 

After Execution of code

Antwort

1

nicht setBounds Verwenden Sie(). Swing wurde für die Verwendung mit Layout-Managern entwickelt.

Der Standard-Layout-Manager für einen Rahmen ist ein BorderLayout. Sie können die Schaltfläche nicht einfach direkt zum Rahmen hinzufügen.

Stattdessen sollten Sie Ihre Logik so etwas wie sein:

JButton button = new JButton(...); 
JPanel wrapper = new JPanel(); 
wrapper.add(button); 
frame.add(wrapper, BorderLayout.PAGE_START); 

Das Standard-Layout für ein JPanel ist ein FlowLayout, die den Knopf an seiner bevorzugten Größe angezeigt werden.

Lesen Sie den Abschnitt aus den Swing-Tutorial auf Layout Manager für weitere Informationen über die BorderLayout und FlowLayout.

Verwandte Themen