2016-06-24 13 views
1

Ich möchte wissen, wie kann ich meine , unten einige Tasten, die ich in meinem Programm habe ... Um Ihnen zu zeigen, wie ich das bestellen möchte, habe ich ein Beispiel in einer GUI .Setzen Sie eine JTextArea an bestimmten Ort

Bildbeispiel:

enter image description here

Grundsätzlich möchte ich sie hinstellen die Tasten, wie im Beispiel. Ich versuche, ein JPanel als Flowlayout und fügen Sie die JTextArea, aber nicht funktioniert.

Antwort

2

Hier ist ein Beispiel, wie ein BorderLayout für das Hauptfeld geeignet ist.

Um Ihrem Beispiel so nahe wie möglich zu kommen, habe ich einen Rand (eine leere Umrandung) zu der Nord-Platte hinzugefügt, sowie eine horizontale Strebe zwischen den Tasten (mit einer BoxLayout für die Nord-Platte).

JFrame frame = new JFrame(); 

JPanel contentPanel = new JPanel(); 

contentPanel.setLayout(new BorderLayout()); 

JPanel buttonsPanel = new JPanel(); 
buttonsPanel.setLayout(new BoxLayout(buttonsPanel, BoxLayout.X_AXIS)); 
buttonsPanel.setBorder(new EmptyBorder(10, 10, 10, 10)); 

JButton b1 = new JButton("B1"); 
JButton b2 = new JButton("B2"); 

buttonsPanel.add(b1); 
buttonsPanel.add(Box.createHorizontalStrut(5)); 
buttonsPanel.add(b2); 

contentPanel.add(buttonsPanel, BorderLayout.NORTH); 
contentPanel.add(new JTextArea(), BorderLayout.CENTER); 

frame.setContentPane(contentPanel); 
frame.setSize(400, 300); 
frame.setVisible(true); 
+1

Danke Berger, das ist was ich brauche, ich habe stundenlang versucht und funktioniert nicht, ich habe ein Borderlayout in meinem Rahmen benutzt und ein Jpanel als Flowlayout um meine Buttons hinzuzufügen, aber wenn ich den Textbereich einfügen will, funktioniert nichts. Aber ich versuche es mit Ihrem Code und läuft. Vielen Dank für Ihre Zeit und Hilfe Jungs, ich schätze wirklich. –

+0

Gern geschehen :) – Berger

+0

Mit 'new EmptyBorder (10, 10, 10, 10)' codierst du den Platzbedarf fest. Dies ist nicht tragbar. –

3

Sie können BorderLayout verwenden und JTextArea zu Center hinzufügen und Layout für Schaltflächenbereich als FlowLayout haben und es in den Norden hinzufügen. Lassen Sie es mich wissen, wenn Sie mit Code hep benötigen.

+1

Sie zu Beniton danken, ich apprecaite Ihre Hilfe und Zeit wirklich. –

+0

Schön. Sehr wenige kommen zurück und danken. – Beniton

1

Das Problem mit BorderLayout und die meisten anderen Layout-Manager wie BoxLayout oder GridBagLayout ist, dass sie Lücken zwischen den Komponenten in Pixel eingestellt. Dies ist nicht übertragbar, weil das Layout auf verschiedenen Bildschirmen anders aussieht. Wenn Sie Ihre UI auf einem 19-Zoll-Monitor erstellen, wird es auf einem 32-Zoll-Monitor nicht gut aussehen. Jetzt sprechen wir über Java-Anwendungen, bei denen die Portabilität im Vordergrund steht.

Glücklicherweise können wir mit GroupLayout oder MigLayout wirklich portable UI erstellen.

package com.zetcode; 

import javax.swing.BorderFactory; 
import javax.swing.JButton; 
import javax.swing.JComponent; 
import javax.swing.JFrame; 
import javax.swing.JTextArea; 
import javax.swing.SwingUtilities; 
import net.miginfocom.swing.MigLayout; 

public class MigLayoutTwoButtonsEx extends JFrame { 

    public MigLayoutTwoButtonsEx() { 

     initUI(); 
    } 

    private void initUI() { 

     JButton btn1 = new JButton("B1"); 
     JButton btn2 = new JButton("B2"); 
     JTextArea area = new JTextArea(15, 28); 
     area.setBorder(BorderFactory.createEtchedBorder()); 

     createLayout(btn1, btn2, area); 

     setTitle("MigLayout example"); 
     setLocationRelativeTo(null); 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    } 

    private void createLayout(JComponent... arg) { 

     setLayout(new MigLayout("gap 5lp 7lp")); 

     add(arg[0], "split 2"); 
     add(arg[1], "wrap"); 
     add(arg[2], "push, grow, span"); 
     pack(); 
    } 

    public static void main(String[] args) { 

     SwingUtilities.invokeLater(() -> { 
      MigLayoutTwoButtonsEx ex = new MigLayoutTwoButtonsEx(); 
      ex.setVisible(true); 
     }); 
    } 
} 

Hier ist ein Beispiel mit dem MigLayout Manager.

setLayout(new MigLayout("gap 5lp 7lp")); 

Wir verwenden logische Pixel, um unsere Lücken zu definieren.

Screenshot:

Screenshot of the example

+0

Danke Jan, tut mir leid, dass ich zu spät geantwortet habe, aber ich melde mich nicht irgendwann an. –

Verwandte Themen