저는 Java Swing에서 가상 피아노 유형 프로그램을 만들고 있습니다. 내 피아노 키 영역은 흰색 JButton을 흰색 키로 포함하는 가로형 BoxLayout이있는 JPanel입니다. 검정색 키를 추가하고 흰색 키가 겹치도록하고 싶습니다.JButton을 겹치게 만들기
내가 시도한 두 가지 접근 방식이 있습니다. 하나는 OverlayLayout을 사용하고 있습니다. 불행히도 OverlayLayout 관리자에게는 온라인 설명서가 많지 않으며 NetBeans GUI 빌더에서는 사용할 수 없습니다. 나는 그것이 작동하도록하는 방법을 알지 못합니다. 두 번째로 시도한 것은 JLayeredPanes를 사용하는 것입니다. 나는 Netbeans에서 그것을 뒤범벅 한 후에도 그 중 하나를 찾아 낼 수 없다.
제 질문은 꽤 간단하다고 생각합니다. 다른 JButton 위에 JButton을 추가하는 가장 좋은 방법은 무엇입니까? 또는 JButton을 피아노 키로 사용하는 다른 방법이 있습니까?
내가 함께 한
편집 aioobe의 내가 원하는 결과를 얻기 dacwe의 코드. 나는 기본적으로 aioobe의 기본 치수 (비트 확장)와 mod 7 파트를 사용하여 dacwe의 z- 순서를 사용했습니다. 또한 변수를 추가하여 더 명확하게했습니다. 이것은 내가 지금 가지고있는 것입니다.
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);
}
}
감사합니다! 이제는 어떻게 든이 버튼에 리스너와 텍스트를 첨부해야합니다.
구성 요소 z 주문이 엉망입니다! – dacwe
생각하십니까? 나는 그것이 좋게 보인다라고 생각한다. .. :) – aioobe
Ehhh, 그것 위에 컴파일되고, 움직이고, 움직이게된다. .. 그들이 re-rendered 할 때 틀린 순서로 버튼을 표현할 것이다. – dacwe