JLayeredPane
에 문제가 있습니다. 매우 간단하지만 매우 놀랍습니다. 내 머리를 감쌀 수 없습니다. 내가 가진 문제는 모든 구성 요소가 함께 병합되고 주문이 없다는 것입니다. 너는 잘 모르겠다. 내가하려고 순서는이JLayeredPane 서식 지정 문제
출력 (앞)
LABEL1 (뒤)
입력
import java.awt.BorderLayout;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.IOException;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
public class window extends JFrame implements KeyListener {
/**
*
*/
private static final long serialVersionUID = 7092006413113558324L;
private static int NewSize;
public static String MainInput;
public static JLabel label1 = new JLabel();
public static JTextField input = new JTextField(10);
public static JTextArea output = new JTextArea(main.Winx, NewSize);
public window() {
super("Satine. /InDev-01/");
JLabel label1;
NewSize = main.Winy - 20;
setLayout(new BorderLayout());
output.setToolTipText("");
add(input, BorderLayout.PAGE_END);
add(output, BorderLayout.CENTER);
input.addKeyListener(this);
input.requestFocus();
ImageIcon icon = new ImageIcon("C:\\Users\\" + System.getProperty("user.name") + "\\AppData\\Roaming\\.Satine\\img\\textbox.png", "This is the desc");
label1 = new JLabel(icon);
add(label1, BorderLayout.PAGE_END);
}
public void keyPressed(KeyEvent e) {
int key = e.getKeyCode();
if (key == KeyEvent.VK_ENTER) {
try {
MainMenu.start();
} catch (IOException e1) {
System.out.print(e1.getCause());
}
}
}
@Override
public void keyReleased(KeyEvent e) {
}
@Override
public void keyTyped(KeyEvent e) {
}
}
과 같은 레이아웃을 가지고있다 메인 클래스. 내가 원하는 건 내가 잘못 가고 위치에 대한 팁입니다
import java.awt.Container;
import java.io.IOException;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
public class main {
public static int Winx, Winy;
private static JLayeredPane lpane = new JLayeredPane();
public static void main(String[] args) throws IOException{
Winx = window.WIDTH;
Winy = window.HEIGHT;
window Mth= new window();
Mth.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Mth.setSize(1280,720);
Mth.setVisible(true);
lpane.add(window.label1);
lpane.add(window.input);
lpane.add(window.output);
lpane.setLayer(window.label1, 2, -1);
lpane.setLayer(window.input, 1, 0);
lpane.setLayer(window.output, 3, 0);
Mth.pack();
}
}
는 시간 내 주셔서 감사하고 나는 코드가 나를 위해 기록 할 것으로 예상하지 않는다.
오버레이를 필요로하는 곳에 왜 그냥 섹션에서는 GUI의 바닥 부분에서의 JLayeredPane를 사용할 수 있습니까? 또한, 왜 JLayeredPane에 컴포넌트를 두 번 추가하는 것처럼 보입니까? 나는'setLayer (...) '메서드를 사용한 적이 없으며 왜 당신이 맞는지 확신 할 수 없다. 왜 단순히'add (Component, Integer)'오버로드를 호출하지 않는가? –
무슨 뜻인지 알지만 어떻게 나눌까요? – Koala
? 어떻게 나누겠습니까? BoxLayout와 같이 전체 GUI에 다른 레이아웃을 사용하고 topp에 출력을 추가하고 JLayeredPane을 맨 아래에 추가 한 다음 JLayeredPane에 컴포넌트를 한 번만 추가하면됩니다. –