2017-07-08 3 views
0

Ich möchte die Grenze um den Textbereich und nicht innerhalb davon. enter image description hereWie definiere ich genau, wo ein Rahmen positioniert wird?

/** 
    This frame shows a data set and its statistics. 
*/ 
public class FileGUI extends JFrame 
{ 

    private static JPanel panel; 
    private JTextArea display; 
    private JButton open; 
    private JButton save; 
    private JButton clear; 


    //declare data fields here (GUI Components and other data fields) 


    public FileGUI() 
    {  

     //Initialize data fields and construct GUI 

     open = new JButton("Open file"); 
     save = new JButton("Save to File"); 
     clear = new JButton("Clear Display"); 

     display = new JTextArea(30,30); 
     Border border = BorderFactory.createTitledBorder("File Summary"); 
     display.setBorder(border); 



     panel = new JPanel(); 
     panel.add(open); 
     panel.add(save); 
     panel.add(clear); 
     panel.add(display); 
    } 

    //supporting methods here. 


    public static void main(String[] args) 
    {  
     JFrame frame = new FileGUI(); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setSize(400, 600); 
     frame.setVisible(true); 
     frame.add(panel); 
    } 
} 

Antwort

0

Wenn Sie die Grenze umschließen Ihr Textfeld wollen, müssen Sie sie in eine andere Komponente wickeln (zum Beispiel ein JPanel) und stellen Sie die Grenze auf die Komponente. Rahmen werden immer innerhalb der Grenzen der Komponenten gerendert, denen Sie sie zuweisen.

Übrigens: Sie erstellen und initialisieren Swing-Komponenten aus dem Hauptthread. Dies ist kein guter Weg, es zu tun. Swing ist eine GUI mit einem einzigen Thread und erfordert, dass alle Interaktionen im Ereignisversand-Thread stattfinden. Ich empfehle die concurrency in swing lesson