Auf Thema antworten

So dann wollen wir mal fix was zusammenbauen :)


Zuerst müssen wir uns gedanken darüber machen wie wir das was du dort skizziert hast optisch umsetzen, wenn ich darauf schaue sehe ich z.B :


- 1 JFrame mit BorderLayout

- 1 JLabel im Head Bereich des JFrames

- 1 JPanel welches unseren Content beinhaltet ( hier mit GridLayout)

- 6 JButtons welche uns nachher die möglichkeit geben die Sounds abzuspielen


Hier der Code dazu , hier ist allerdings noch keine Funktionalität vorhanden, dazu kommen wir jetzt gleich:


[SPOILER="Gui"][code=Java]

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.Font;

import java.awt.GridLayout;


import javax.swing.BorderFactory;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;


public class Gui extends JFrame {

    private static final long serialVersionUID = 1L;


    public final static Dimension GUI_SIZE = new Dimension(400,300);

    public final static String GUI_TITLE = "Audio Player v1.0";


   

    private JPanel contentPane;

    private JPanel headerPane;

   

    private JButton[] btns;

   

    public Gui() {

      

        setSize(GUI_SIZE);

        setTitle(GUI_TITLE);

        setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        setLocationRelativeTo(null);

       

        this.contentPane = new JPanel(new GridLayout(3,2,20,20));

        this.contentPane.setBorder(BorderFactory.createEmptyBorder(30, 30, 30, 30));

       

        this.headerPane = new JPanel();

       

        this.btns = new JButton[6];

       

        createComponents();

    }

   

    private void createComponents(){

       

        JLabel header = new JLabel("<Html>Mit welchem Instrument soll 'Suit'<br>"

                + "von R.CH.Martin gespielt werden ?</Html>", JLabel.CENTER);

       

        Font newFont = header.getFont().deriveFont(14f);

       

        header.setFont(newFont);

   

        String[] label = {"Bandoneon","Harfe","Blockflöte","Klavier","Glockenspiel","Orgel"};

       

        for (int i = 0; i < btns.length; i++) {

            btns[i] = new JButton(label[i]);

        }

       

        for (int i = 0; i < btns.length; i++) {

            contentPane.add(btns[i]);

        }

       

       

        this.headerPane.add(header);

       

        this.add(BorderLayout.PAGE_START, headerPane);

        this.add(BorderLayout.CENTER, contentPane);   

    }

}

[/code][/SPOILER]


Das ganze schaut dann so aus :



Ich habe hier erst einmal versucht es so einfach wie möglich für dich zu gestalten , und erzeuge hier über Schleifen die nötigen Elemente, und fülle diese dann über eine weitere Schleife mit Text, welchem ich zuvor initialisiert habe, wenn du Fragen dazu haben solltest immer raus damit , schließlich sollst du es ja nachvollziehen können :)


als nächstes werden wir einen Listener einbinden , und zwar in einfachster Form, welcher auf die Buttonsklicks lauscht und dann über sogenannte Events die nötigen Aktionen ausführt/aufruft.


[EDIT]Das verwenden von HTML Tags im JLabel ist notwendig da sonst keine Zeilenumbruch stattfindet, ansonsten hätten wir eine eigenständige klasse von JLabel ableiten müssen um dieses feature selbst zu implementieren, was hier eindeutig zu aufwendig wäre.[/EDIT]


Da ich nicht weiß ob nur ein Interpret mit verschiedenen Instrumenten Voraussetzung bei dir ist ,

habe ich auch nur das von dir skizzierte nachgestellt, wenn du mehrere Künstler anbieten sollst, müsste man sonst das gleiche nochmal für Künstler machen , und dann beim auswählen dieser dann dieses Fenster öffnen welches die verschiedenen Instrumente anbietet, ansonsten könnte man es so lassen.



Oben