2013-04-11 5 views
1

JPanel을 만들고 조금 수정했습니다. 그라디언트 색상을 배경으로 변경합니다. 여기 클래스입니다. JPanel의 구성 요소가 표시되지 않습니다.

public class JGradientPanel extends JPanel { 
    private static final int N = 32; 
    private Color color1, color2; 
     public JGradientPanel(Color color1, Color color2) { 
      this.setBorder(BorderFactory.createEmptyBorder(N, N, N, N)); 

      this.color1 = color1; 
      this.color2 = color2; 
     } 

     @Override 
     public void paintComponent(Graphics g) { 
      super.paintComponent(g); 
      Graphics2D g2d = (Graphics2D) g; 
      //Color color1 = getBackground(); 
      //Color color2 = color1.darker(); 
      int w = getWidth(); 
      int h = getHeight(); 
      GradientPaint gp = new GradientPaint(
       0, 0, color1, 0, h, color2); 
      g2d.setPaint(gp); 
      g2d.fillRect(0, 0, w, h); 
     } 
} 

지금 내가 패널에 몇 가지 구성 요소를 추가하지만 아무것도 표시되지 않았습니다, 여기

public JPanel getMenu() { 
     JGradientPanel menu = new JGradientPanel(Color.WHITE, Color.white.darker()); 
     int menuHeight = (int) ((int) getHeight() * 0.07); 
     menu.setPreferredSize(new Dimension(screenWidth,menuHeight)); 
     menu.setLayout(new GridLayout(1,10)); 
     menu.setBackground(Color.LIGHT_GRAY); 

     //test 
     JGradientButton test = new JGradientButton("test",Color.GREEN, Color.BLUE); 
     menu.add(test); 

     JLabel space = new JLabel(); // first blank space on the menu 
     space.setBounds(0, 0, menu.getPreferredSize().width - 50, menu.getPreferredSize().height); 
     space.setBorder(BorderFactory.createMatteBorder(0, 0, 0, 1, Color.GREEN)); 
     menu.add(space); 
     JLabel moreSpaces[] = new JLabel[6]; 
     buttons = new JButton[buttonLabels.length]; 
     for(int counter = 0; counter < moreSpaces.length + buttonLabels.length; counter ++) { 
      if(counter < 3) { 
       buttons[counter] = new JButton(buttonLabels[counter]); //menu buttons 

      } else { 
       moreSpaces[counter - 3] = new JLabel(); // the rest of the blank in the menu 
      } 
     } 
     // adding components to menu panel 
     for(int counter = 0; counter < moreSpaces.length + buttonLabels.length; counter ++){ 
      if(counter < 3) { 
       buttons[counter].setFocusPainted(false); 
       menu.add(buttons[counter]); 
      } else { 
       menu.add(moreSpaces[counter - 3]); 
      } 

     } 
     return menu; 
    } 

내가 뭔가를 놓친 건가 코드 또는 내가 그것을 잘못을 했습니까? 내 코드에 무슨 문제가 있습니까? 결코 반환 PreferredSize to JPanel에 기본적으로 public void paintComponent(Graphics g) {으로 public class JGradientPanel extends JPanel {

  • Painting in Swing

  • +0

    다른'JFrame' 또는 동등한이'JPanel' 독립형 또는 추가인가? 또한 가시적으로 설정되어 있습니까? – asgs

    +0

    JFrame에 추가됩니다. – user1708134

    +0

    간단한 JPanel을 사용하면 구성 요소에 – user1708134

    답변

    관련 문제