2016-06-05 5 views
0

뭔가를 만들려고하는데 내 레이블 "money"가 나타나지 않고 그 이유를 모르겠습니다. 나는 그것을 잠시 동안 고치려고 노력해 왔습니다. 내 코드는 다음과 같습니다.내 라벨이 표시되지 않는 이유는 무엇입니까? (Java)

 public class main { 
static int amountOM = 200; 
static JFrame jf = new JFrame("Game"); 
static JPanel jp = new JPanel(); 
static JPanel jp2 = new JPanel(); 
static JButton exit = new JButton("Exit"); 
static JLabel money = new JLabel("$ "+amountOM); 


public static void main(String[] args){ 
    start(); 
} 

public static void start() { 


    jf.setLayout(null); 
    jf.pack(); 

    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
    jf.setSize(500, 500); 


    jf.setLocationRelativeTo(null); 
    jf.setResizable(false); 

    jp.setLocation(0, 0); 
    jp.setSize(400, 500); 

    jp2.setLocation(400, 0); 
    jp2.setSize(100, 500); 

    exit.setLocation(405, 10); 
    exit.setSize(85,50); 

    money.setLocation(405, 200); 
    money.setSize(100,50); 

    jp2.setBackground(Color.gray); 
    money.setBackground(Color.black); 

    jf.add(jp); 
    jf.add(jp2); 
    jf.add(exit); 
    jf.add(money); 

    jf.setVisible(true); 

} 
} 

문제를 알고 있으면 알려주십시오. 고맙습니다.

당신은 JPanel에로의 JLabel을 포함하고

+0

버튼이 표시 하는가 : 예를 들어

? – Hackerdarshi

답변

1

(그것은 내 게시물이 코드가 대부분이라고 말해 계속 메신저가 바로 여기에이 텍스트를 추가 할 수 있도록 세부 정보를 추가 기쁘게), JP2는 정확합니다. 해결책은 절대 위치 지정과 널 레이아웃을 사용하지 않는 것입니다. 왜냐하면 마치 자신이하는 것처럼 발에서 자신을 찍기가 너무 쉽기 때문입니다. 이 유형의 질문에 대한 비슷한 대답은 모두 당신에게 알 수 있습니다 : 레이아웃 관리자를 배우고 사용하십시오.

null 레이아웃 및 setBounds()은 복잡한 GUI를 만드는 가장 쉽고 좋은 방법처럼 스윙 초보자처럼 보일 수 있지만 더 많은 스윙 GUI를 사용하면 더 어려울 수 있습니다. 그들은 GUI의 크기를 조정할 때 구성 요소의 크기를 조정하지 않으며, 향상 시키거나 유지 보수 할 왕가이며, 스크롤 패널에 배치 될 때 완전히 실패합니다. 원래 플랫폼과 다른 모든 플랫폼이나 화면 해상도에서 볼 때 끔찍한 것처럼 보입니다. .

레이아웃 관리자 자습서는 Layout Manager Tutorial에서 찾을 수 있으며 스윙 튜토리얼 및 다른 스윙 리소스에 대한 링크는 Swing Info에서 찾을 수 있습니다.

import java.awt.BorderLayout; 
import java.awt.Color; 
import java.awt.Dimension; 

import javax.swing.*; 

public class Game2 extends JPanel { 

    private static final int BOX_W = 400; 
    private static final int BOX_H = BOX_W; 
    private static final Color SIDE_BG = Color.GRAY; 
    private JLabel moneyLabel = new JLabel("$20.00"); 

    public Game2() { 
     JButton exitButton = new JButton("Exit"); 
     JPanel exitBtnPanel = new JPanel(); 
     exitBtnPanel.add(exitButton); 
     exitBtnPanel.setOpaque(false); 
     int eb = 2; 
     exitBtnPanel.setBorder(BorderFactory.createEmptyBorder(eb, eb, eb, eb)); 

     JPanel moneyPanel = new JPanel(); 
     moneyPanel.add(moneyLabel); 
     moneyPanel.setOpaque(false); 

     JPanel sidePanel = new JPanel(); 
     sidePanel.setBackground(SIDE_BG); 
     sidePanel.setLayout(new BoxLayout(sidePanel, BoxLayout.PAGE_AXIS)); 
     sidePanel.add(exitBtnPanel); 
     sidePanel.add(moneyPanel); 

     setLayout(new BorderLayout()); 
     add(Box.createRigidArea(new Dimension(BOX_W, BOX_H))); 
     add(sidePanel, BorderLayout.LINE_END); 
    } 

    private static void createAndShowGui() { 
     Game2 mainPanel = new Game2(); 

     JFrame frame = new JFrame("Game2"); 
     frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 
     frame.getContentPane().add(mainPanel); 
     frame.pack(); 
     frame.setLocationByPlatform(true); 
     frame.setVisible(true); 
    } 

    public static void main(String[] args) { 
     SwingUtilities.invokeLater(() -> createAndShowGui()); 
    } 
} 
관련 문제