컨테이너 클래스에 생성 한 JPanel 클래스를 추가하는 데 문제가 있습니다. 솔직하게 말해서, 이것이 내 메뉴를 만드는 가장 좋은 방법인지 잘 모르겠습니다. 나는 교수님들에게 물어 봤고 TA들과 그들은 모두 다른 것들을 말해 줬어.자바 - JPanel 클래스를 JFrame 컨테이너 클래스에 추가하려면 어떻게해야합니까?
EDIT : JPanel 클래스에서 만든 주 메뉴는 표시되지 않습니다. 컨테이너 클래스에서 제대로 추가했다고 생각하지만 완전히 확신 할 수는 없습니다.
이 내가 컨테이너에 추가하려고 해요 내 JPanel의 클래스입니다 :
package view;
import java.awt.CardLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Toolkit;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import model.MainMenu;
@SuppressWarnings("serial")
public class MainFrame extends JFrame {
private static JFrame mainContainer = new JFrame("Checkers");
private JPanel card = new JPanel(new CardLayout());
private CardLayout cardLayout = (CardLayout) (card.getLayout());
private JPanel homeCard, singlePlayerCard, multiPlayerCard, scoreBoardCard;
private JPanel mainMenu = MainMenu.getMenuInstance();
public MainFrame() {
}
private void addComponentToPane(Container pane) {
//mainMenu.construct();
homeCard = new JPanel();
singlePlayerCard = new JPanel();
multiPlayerCard = new JPanel();
scoreBoardCard = new JPanel();
homeCard.add(mainMenu);
card.add(homeCard, "homeCard");
cardLayout.show(card, "homeCard");
pane.add(card);
}
public static void createAndShowGUI() {
MainFrame frame = new MainFrame();
frame.addComponentToPane(mainContainer.getContentPane());
mainContainer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
mainContainer.pack();
mainContainer.setSize(920, 650);
mainContainer.setVisible(true);
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
mainContainer.setLocation(dim.width/2 - mainContainer.getSize().width
/2, dim.height/2 - mainContainer.getSize().height/2);
}
}
나는 JPanel의 클래스를 갖고 싶어하는 이유 : 여기
package.model;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class MainMenu extends JPanel {
private static MainMenu instance;
private JPanel mainMenu;
private JButton btnSinglePlayer, btnMultiPlayer, btnScoreBoard, btnQuit;
private MainMenu() {
mainMenu();
singlePlayer();
multiPlayer();
scoreBoard();
quit();
}
public static MainMenu getMenuInstance() {
if (instance == null) {
instance = new MainMenu();
}
return instance;
}
public void construct() {
mainMenu();
singlePlayer();
multiPlayer();
scoreBoard();
quit();
}
private JPanel mainMenu() {
mainMenu = new JPanel();
mainMenu.setLayout(null);
return mainMenu;
}
private JButton singlePlayer() {
btnSinglePlayer = new JButton("SinglePlayer");
btnSinglePlayer.setBounds(365, 210, 170, 55);
mainMenu.add(btnSinglePlayer);
return btnSinglePlayer;
}
private JButton multiPlayer() {
btnMultiPlayer = new JButton("MultiPlayer");
btnMultiPlayer.setBounds(365, 300, 170, 55);
mainMenu.add(btnMultiPlayer);
return btnMultiPlayer;
}
private JButton scoreBoard() {
btnScoreBoard = new JButton("ScoreBoards");
btnScoreBoard.setBounds(365, 411, 170, 55);
mainMenu.add(btnScoreBoard);
return btnScoreBoard;
}
private JButton quit() {
btnQuit = new JButton("Quit");
btnQuit.setBounds(365, 500, 170, 55);
mainMenu.add(btnQuit);
return btnQuit;
}
}
그리고 내 컨테이너 클래스 , 그리고 나는 하나 이상의 btw를 가질 것입니다. 왜냐하면 그 클래스가 내 게임 스레드를 시작하기를 원하기 때문입니다. 그리고 나는보기를 통해 게임 스레드를 시작하고 싶지 않습니다. 이것이 나쁜 디자인이라면 알려주세요.
저는 게시자 클래스를 가지고 있습니다. 게시자에게는 게시와 관련이없는 것으로 생각됩니다. 나는 그것을 올바르게했다는 것을 알고 있습니다. 나는 대학에서 3-4 TA의 오류를 발견 할 수 없습니다.
"컨테이너 클래스에 생성 한 JPanel 클래스를 추가하는 데 문제가 있습니다." 어떤 문제가 있습니까? 디자인 문제? 컴파일러 오류? 또는 다른 조언? –
오, 미안합니다. 그래서 컴파일하지만 MainMenu 클래스에서 생성 된 메인 메뉴는 보이지 않습니다. 왜 그런지 모르겠습니다. 코드에 도달해야하지만 그렇지는 않습니다. –