2016-05-01 3 views
0

Die Frage ist ziemlich einfach. Ich erkannte meinen Code ein wenig gereinigt werden könnte, wenn ich durfte Komponenten zu einem JPanel wie folgt hinzuzufügen:Ist es möglich, mehrere Komponenten zu JPanel in einer Anweisung hinzuzufügen?

//north panel 
JPanel northPanel = new JPanel(new GridLayout(0,3)); 
btnAdd = new JButton("Add"); 
btnEdit = new JButton("Edit"); 
btnDelete = new JButton("Delete"); 
northPanel.add(btnAdd, btnEdit, btnDelete); 

statt wie folgt aus:

//north panel 
JPanel northPanel = new JPanel(new GridLayout(0,3)); 
btnAdd = new JButton("Add"); 
btnEdit = new JButton("Edit"); 
btnDelete = new JButton("Delete"); 
northPanel.add(btnAdd); 
northPanel.add(btnEdit); 
northPanel.add(btnDelete); 

Gibt es eine Möglichkeit, es zu tun? Ich habe SO und das Internet angeschaut, einschließlich Oracles Dokumentation, und ich weiß, dass es keine .add() - Methode gibt, die mit dieser speziellen Syntax erstellt wurde, aber ich würde gerne wissen, ob es eine andere Methode mit dieser Funktionalität gibt.

gute Lösung:

Vielen Dank für Ihr Feedback. Es macht Sinn, dass eine einzelne Aussage tatsächlich verschlungener wäre, wenn sie in der von mir beschriebenen Weise durchgeführt würde. L. Mehmeti schlug vor, die Komponenten in einem Array zu speichern und eine Methode zu erstellen, die alle Komponenten im Array hinzufügt, was perfekt zu der Frage passt. Auf diese Weise, wenn es eine Menge von Komponenten zu bekommen, die Bestellung ist leicht zu verfolgen, anstatt durch eine Reihe von separaten Konstruktoren suchen und Anweisungen hinzufügen.

+0

Es gibt keinen Vorteil zu versuchen, Dinge in einer einzigen Anweisung zu tun. In der Tat ist es besser, einzelne Anweisungen aus Sicht der Fehlersuche und Wartung zu verwenden. Es ist einfacher, den Code zu lesen und zu verstehen, wenn er in einer einzigen Zeile geschrieben ist. Versuchen Sie nicht einmal, dies zu tun. – camickr

+0

Der einzige Weg wäre, alles in eine Methode einzufügen – DarkV1

+0

Aber das ist das gleiche wie das, was Sie gerade tun. außer alles ist in einer Methode organisiert – DarkV1

Antwort

0

Es tut mir sehr leid, aber ich denke, es gibt keine Möglichkeit, das zu tun. Die einzige Art, wie ich denke, ist deine eigene Methode zu schreiben. Zum Beispiel:

public static void main(String[] args) { 

    Example main = new Example("Example"); 

} 

public Example(String title) { 

    super(title); 

    JPanel panel = new JPanel(); 

    panel.setLayout(new FlowLayout()); 

    JComponent[] components = new JComponent[3]; 

    components[0] = new JLabel("Hello!"); 
    components[1] = new JLabel("How are you?"); 
    components[2] = new JLabel("I am fine. Thanks"); 

    addComponents(panel, components); 

    add(panel); 

    setVisible(true); 

} 

public void addComponents(JComponent target, JComponent[] components) { 

    for(JComponent component : components) { 

     target.add(component); 

    } 

} 

Ich hoffe, ich könnte helfen.

+0

Siehe ... Sma ... Es ist der einzige Weg, um das zu erreichen, wonach die Person sucht – DarkV1

0

Sie könnten eine Methode erstellen und sie in Ihrer Init-Methode aufrufen.

public void addComponentsJ() 
{ 
    northPanel.add(btnAdd); 
    northPanel.add(btnEdit); 
    northPanel.add(btnDelete); 
} 

damit Sie sich

addComponentsJ()// to add all the components.. 

aber, das ist relativ gleich wie das, was Sie gerade die Add-Methode auf eine andere Methode aufruft verlagern tun ... sind verwenden. so können Sie "alle in einer Anweisung hinzufügen" Swing unterstützt nicht das Hinzufügen von Komponenten in einer Anweisung ... die einzige Möglichkeit besteht darin, Aufrufe an eine andere Methode zu verlagern.

+0

Sie haben die Verantwortung von einer Methode auf die andere delegiert, was OP nicht ist. Wie würde Ihre Methode verschiedene Schaltflächen kennen, die OP erstellt hat? – SMA

+0

Er wollte nur alle Knöpfe in einer Aussage hinzufügen. – DarkV1

+0

Er möchte alle Schaltflächen im Panel in einer Anweisung hinzufügen/Aufruf einer anderen Methode – DarkV1

Verwandte Themen