2013-10-29 5 views
-1

안녕하세요, Jframe을 사용하여 간단한 배경 분할을 반으로 만듭니다. 배경을 이동하고 열린 창으로 조정하려면 어떻게해야합니까?Java Jframe 배경 지원

import javax.swing.JFrame; 

public class Concert 
{ 
    public static void main(String[] args) 
    { 
     JFrame frame = new JFrame(); 
     frame.setSize(1000, 800); 
     frame.setTitle("Concert!"); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     Concertbackground component = new Concertbackground(); 
     frame.add(component); 

     frame.setVisible(true); 
    } 
} 

배경 : 다른 모든 가져온 것들을 지금 무시하십시오.

import java.awt.Color; 
import java.awt.Graphics; 
import java.awt.Graphics2D; 
import java.awt.Rectangle; 
import java.awt.geom.Ellipse2D; 
import java.awt.geom.Line2D; 
import javax.swing.JComponent; 
import java.awt.GradientPaint; 

/* 
    component that draws the concert background 
*/ 
public class Concertbackground extends JComponent 
{ 
    public void paintComponent(Graphics g) 
    { 
     // Recover Graphics2D 
     Graphics2D g2 = (Graphics2D) g; 

     //Background Top 
     g2.setColor(Color.BLUE); 
     Rectangle backgroundTop = new Rectangle (0, 0, 1000, 400); 
     g2.fill(backgroundTop); 

     // Background bottom 
     g2.setColor(Color.GREEN); 
     Rectangle backgroundBottom = new Rectangle (0, 400, 1000, 800); 
     g2.fill(backgroundBottom); 

    } 

} 

답변

0

어떻게 배경 움직임을 만들어 내 열 창 조정 않습니다.

하드 코드 값을 지정하지 마십시오. 사용 : 높이/2

그리고 하단 부분은 높이/2에서 높이와 전체 폭 것에

int width = getWidth(); 
int height = getHeight(); 

는 그런 다음 상단 부분을 전체 폭과 0의 높이를 그릴 수 신장.

또한이 구성 요소에 대한 레이아웃 관리자를 설정하여 다른 구성 요소를 추가 할 수 있습니다. 일반적으로 프레임의 기본 패널은 BorderLayout을 사용합니다.

0

기본적으로 JComponent이 투명하다는 점에 유의하십시오 (이는 다음 부분에서 매우 중요합니다).

둘째, 당신은 ...

제대로 준비되고있다하는 페인트하려고 그래픽스 문맥 ... 셋째

, 당신은 마법의 숫자에 의존해서는 안 있도록 super.paintComponent를 호출한다 당신의 의도는 프레임의 배경으로 구성 요소를 사용하는 경우

public class Concertbackground extends JComponent 
{ 
    public void paintComponent(Graphics g) 
    { 

     super.paintComponent(g); 
     // Recover Graphics2D 
     Graphics2D g2 = (Graphics2D) g; 

     //Background Top 
     g2.setColor(Color.BLUE); 
     Rectangle backgroundTop = new Rectangle (0, 0, getWidth(), getHeight()/2); 
     g2.fill(backgroundTop); 

     // Background bottom 
     g2.setColor(Color.GREEN); 
     Rectangle backgroundBottom = new Rectangle (0, getHeight()/2, getWidth(), getHeight()/2); 
     g2.fill(backgroundBottom); 

    } 

} 

, 당신은 프레임에 추가하는 대신 JFrame#setContentPane를 사용하는 것이 좋습니다 예를 들어

...