Ich erstelle ein virtuelles Klavier-Typ-Programm in Java Swing. Mein Bereich für die Klaviertasten ist jetzt ein JPanel mit einer horizontalen BoxLayout, die weiße JButtons als weiße Tasten enthält. Ich möchte auch schwarze Tasten hinzufügen und sie mit den weißen Tasten überlappen lassen.Making JButtons überlappen
Es gibt zwei verschiedene Ansätze, die ich ausprobiert habe. Einer verwendet das OverlayLayout. Leider gibt es nicht viel Dokumentation online für den OverlayLayout-Manager, und es ist nicht im NetBeans-GUI-Builder verfügbar. Ich habe keine Ahnung, wie es funktioniert. Die zweite Sache, die ich ausprobiert habe, ist JLayeredPanes. Ich kann mir das auch nicht vorstellen, selbst nachdem ich es in Netbeans damit zu tun hatte.
Also ich denke meine Frage ist ziemlich einfach. Was ist der beste Ansatz, wenn es einen gibt, JButtons über anderen JButtons hinzuzufügen? Oder gibt es eine Alternative zur Verwendung von JButtons für Klaviertasten?
EDIT
I kombiniert habe aioobe der und Code des dacwe das Ergebnis, das ich wollte zu bekommen. Ich benutzte im Grunde Dacwes Z-Ordering mit aioobes Grunddimensionen (etwas vergrößert) und dem Mod-7-Part auch. Ich habe auch einige Variablen hinzugefügt, um die Dinge klarer zu machen. Das habe ich jetzt.
import javax.swing.*;
import java.awt.Color;
public class Test2 {
public static void main(String[] args) {
JFrame frame = new JFrame("Test");
JLayeredPane panel = new JLayeredPane();
frame.add(panel);
int maxKeys = 8;
int width = 60;
int height = 240;
for (int i = 0; i < maxKeys; i++) {
JButton b = new JButton();
b.setBackground(Color.WHITE);
b.setLocation(i * width, 0);
b.setSize(width, height);
panel.add(b, 0, -1);
}
int width2 = 48;
int height2 = 140;
for (int i = 0; i < maxKeys; i++) {
int j = i % 7;
if (j == 2 || j == 6)
continue;
JButton b = new JButton();
b.setBackground(Color.BLACK);
b.setLocation(i*(width) + (width2*3/4), 0);
b.setSize(width2, height2);
panel.add(b, 1, -1);
}
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(500,280);
frame.setVisible(true);
}
}
Danke Jungs! Jetzt muss ich irgendwie den Hörer und den Text an diese Buttons anhängen.
Komponenten z Bestellung sind durcheinander !! – dacwe
Sie denken? Ich denke, es sieht gut aus ... :) – aioobe
Ehhh, kompiliert und ausgeführt und Maus darüber bewegt ... es wird die Schaltflächen in der falschen Reihenfolge rendern, wenn sie neu gerendert werden. – dacwe