예,이 질문은 중복되는 것처럼 보일 수 있지만 나와 함께합니다. 작동하는지, 아래의 코드를 가지고 :JFrame 내부의 JPanel에 대한 참조를 어떻게 동적으로 변경합니까?
private void setMainLayout(Container pane) {
String imagePath = Start.getProperty("IMAGE_DIR");
characters.add(char1); // pseudocode
characters.add(char2);
characters.add(char3);
characters.add(char4);
// "CharacterDisplay.getMainLayout()" returns a Box object:
for (CharacterDisplay character : characters)
character.getMainLayout().setBorder(BorderFactory.createMatteBorder(2, 2, 2, 2, Color.WHITE));
// "mainFrame" is a JFrame:
mainFrame.setLayout(new GridBagLayout());
GridBagConstraints gbc = new GridBagConstraints();
/* do random gridbagconstraints stuff */
pane.add(characters.get(0).getMainLayout(), gbc);
/* do random gridbagconstraints stuff */
// "nonCharacterArea" is a JPanel:
nonCharacterArea.setOpaque(true);
nonCharacterArea.setBackground(Color.BLACK);
nonCharacterArea.setLayout(new GridBagLayout());
GridBagConstraints constCenter = new GridBagConstraints();
/* do random gridbagconstraints stuff */
nonCharacterArea.add(actionPane, constCenter); // actionPane is a kind of JPanel
/* do random gridbagconstraints stuff */
nonCharacterArea.add(menuPane, constCenter); // menuPane is a kind of JPanel
pane.add(nonCharacterArea, gbc);
/* do random gridbagconstraints stuff */
pane.add(characters.get(1).getMainLayout(), gbc);
gbc.gridx = 0;
gbc.gridy = 2;
pane.add(characters.get(2).getMainLayout(), gbc);
gbc.gridx = 2;
gbc.gridy = 2;
pane.add(characters.get(3).getMainLayout(), gbc);
} // setMainLayout
내가 실행 중에 동적으로 actionPane
개체를 변경할 수 있도록합니다. 가장 좋은 방법은 무엇입니까? 나는이 pseudo-code 블록을 작성하여 특히 사람들이 유사한 질문에 게시 한 다른 예제처럼 단순하지 않다는 것을 보여줍니다. 화면의 특정 지점에서 JPanel의 정확한 배치를 기반으로하기 때문에이 setMainLayout actionPane 객체 만 변경할 때마다() 메서드를 호출하지 않아도됩니다.
때로는 측면 스크롤링 화면이 될 수도 있고 때로는 상점 인터페이스가 될 수도 있으며, 다양한 종류의 것들이 될 수 있습니다.
아이디어가 있으십니까? 감사.