0
레이아웃 관리자를 사용하여 간단한 카드 디스플레이 프로그램을 만들려고했지만 레이아웃 관리자를 제대로 사용하지 못했습니다. 여기에 내 코드가 있는데, contentPane의 레이아웃 관리자로 BorderLayout();
, buttonPanel의 경우 GridLayout();
, cardPanel의 경우 CardLayout();
, labelPanel의 경우 FlowLayout();
을 사용합니다.레이아웃 관리자 사용
public class TestClass // implements ActionListener
{
static JPanel content = new JPanel(new BorderLayout());
static JPanel cardPanel = new JPanel();
static CardLayout cardLayout;
static JPanel buttonPanel = new JPanel(new FlowLayout());
static JPanel labelPanel = new JPanel(new GridLayout(9,1));
static JButton jack, king, queen, ace;
static JButton first, last, prev, next;
public static void main(String[] args) {
JFrame window = new JFrame("Window");
//------Creates the Label Panel --//
JLabel label = new JLabel("SELECT A CARD");
label.setFont(new Font("Georgia",Font.BOLD,18));
labelPanel.add(label, FlowLayout.LEFT);
//-----Creates the Button Panel --//
jack = new JButton("Jack");
queen = new JButton("Queen");
king = new JButton("King");
ace = new JButton("Ace");
first = new JButton("First");
last = new JButton("Last");
prev = new JButton("Previous");
next = new JButton("Next");
JLabel sep = new JLabel("-------");
buttonPanel.add(jack);
buttonPanel.add(queen);
buttonPanel.add(king);
buttonPanel.add(ace);
buttonPanel.add(sep);
buttonPanel.add(first);
buttonPanel.add(last);
buttonPanel.add(prev);
buttonPanel.add(next);
//-------Creates the cardPanel --//
JLabel card1 = new JLabel("JACK");
JLabel card2 = new JLabel("QUEEN");
JLabel card3 = new JLabel("KING");
JLabel card4 = new JLabel("ACE");
cardPanel.add(card1, "jack");
cardPanel.add(card2, "queen");
cardPanel.add(card3, "king");
cardPanel.add(card4, "ace");
cardPanel.setLayout(cardLayout = new CardLayout());
cardLayout.first(cardPanel);
// ----- Adds the panels to the contentPane ---//
content.add(labelPanel, BorderLayout.NORTH);
content.add(buttonPanel, BorderLayout.WEST);
content.add(cardPanel, BorderLayout.CENTER);
window.setContentPane(content);
window.setLocation(300,100);
window.pack();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
window.setResizable(true);
}
}
그러나 예상대로 출력되지 않습니다. 왼쪽 위의 레이블, 왼쪽의 단추 (그리드를 사용하여 배치 한), 그리고 중앙의 cardLabel을 원합니다.
편집 : 문제 해결, 당신의 그리드 레이아웃 (labelPanel)에있는 유일한 것은 이것이다 바보 같은 실수
static JPanel buttonPanel = new JPanel(new GridLayout(9,1)); //previously FlowLayout
static JPanel labelPanel = new JPanel(new FlowLayout()); //previously GridLayout
입력 주셔서 감사하지만 난 .... 그것을 가지고 여기에 정적 JPanel의 buttonPanel = 새로운 JPanel의를 바보 같은 실수를 (새 GridLayout과 (9,1)); // 이전에 FlowLayout(); 정적 JPanel labelPanel = 새 JPanel (새 FlowLayout()); // 이전 GridLayout (9,1) –
우리 모두는 어리석은 실수를 저지른다. 너는 그것을 고쳤다 고 했니? –
확실히 선생님, 나는 처음에 내 psedocode에 쓴 것처럼 gridlayout 대신 버튼 패널에 flowlayout을 사용하고있었습니다. 그것의 우스운 방법 나는 그것을 발견하지 않았다. 감사합니다 –