JavaSwingで仮想ピアノタイプのプログラムを作成しています。現在のピアノキーの私の領域は、白いキーとして白いJButtonを含む水平のBoxLayoutを持つJPanelです。黒のキーも追加して、白のキーと重ねてもらいたいです。
私が試した2つの異なるアプローチがあります。1つはOverlayLayoutを使用しています。残念ながら、OverlayLayoutマネージャのオンラインドキュメントはあまりなく、NetBeansGUIビルダーでは利用できません。私はそれを機能させる方法の手がかりを持っていません。私が試した2番目のことは、JLayeredPanesを使用することです。Netbeansでそれをいじった後でも、私はそれを理解できないようです。
ですから、私の質問は非常に単純だと思います。他のJButtonの上にJButtonを追加するための最良のアプローチは、もしあれば、何ですか?それとも、ピアノの鍵盤にJButtonを使用する代わりの方法がありますか?
編集
aioobeとdacweのコードを組み合わせて、希望する結果を得ました。私は基本的に、aioobeの基本的な寸法(少し拡大)とmod7の部分を使用したdacweのz-orderingを使用しました。また、物事をより明確にするためにいくつかの変数を追加しました。これは私が今持っているものです。
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);
}
}
みんなありがとう!次に、リスナーとテキストをこれらのボタンに何らかの方法で添付する必要があります。