나는 클래스가 Main
확장 JFrame
및 클래스 DrawingPanel
확장 JPanel
. DrawingPanel
그것의 paintComponent()
방법에 사각형을 채 웁니다 . Main
간단 JFrame
합니다.
Main
에의 인스턴스를 추가 DrawingPanel
합니다 JFrame
.
문제는:
에 대한 레이아웃을 설정하지 않으면 Main
의 사각형 DrawingPanel
이 올바르게 표시됩니다. 나는의 레이아웃 설정하는 경우 Main
가정을 FlowLayout()
, 사각형이 표시되지 않습니다,하지만 난 알고 paintComponent()
있는 방법 DrawingPanel
내가 확인이 메소드 내부에서 콘솔에 뭔가를 인쇄하기 때문에, 실행 않습니다를. 또한 패널의 검은 색 테두리가 나타납니다.
암호:
DrawingPanel 클래스 :
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class DrawingPanel extends JPanel {
Rectangle rect = new Rectangle(50,50,50,50);
public void paintComponent(Graphics g){
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.fill(rect);
}
}
클래스 메인 :
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Main extends JFrame {
JPanel panel;
public Main(){
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(400,400);
setVisible(true);
setLayout(new FlowLayout());//If I delete this line, the square gets
//displayed correctly. Otherwise, the panel
//and it's black border are displayed without
//a black square inside of them.
panel = new DrawingPanel();
panel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
add(panel);
}
public static void main(String[] args) {
Main m = new Main();
}
}
당신의 도움을 주셔서 감사합니다 :)
Main에 대한 레이아웃을 설정하지 않으면 정사각형이 올바르게 표시됩니다. Main에 대한 레이아웃을 설정하면 FlowLayout ()을 가정하면 사각형이 표시되지 않습니다.
FlowLayout
FlowLayout
컨테이너에 추가 할 컴포넌트 의 선호 크기에 따라 컴포넌트의 선호 크기를 설정하십시오 . 구성 요소를 확장하고 재정의하는 getPreferredSize(Dimenstion)
것은 구성 요소의 내용에 따라 크기를 조정할 수 있으므로 크기 힌트를 제공하는 데 바람직합니다.setSize(Dimension)
. 대신 pack()
사용 사례에서 모든 구성 요소를 추가하면 호출 하십시오. 패킹 방법은 모든 내용이 원하는 크기 이상이되도록 프레임 크기를 조정합니다.setVisible(true)
프레임에 구성 요소를 모두 추가 한 후도 호출 한 후에 호출되어야 pack()
에 JFrame
.JFrame.setVisible(true)
EDT 내에서 실행되어야합니다. 의 만들기 사용 SwingUtilities.invokeLater(Runnable)
이 경우에.공식 튜토리얼 페이지 확인 :
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다