1
저는 현재 MouseListeners를 사용하여 장식되지 않은 JFrame
으로 만든 제 윈도우의 크기 조정을 구현하려고합니다. 다음은 JFrame의 이스트 사이드 크기 조정을 구현 한 예입니다.JFrame 자바의 서쪽 크기 조정
sizeX
및 sizeY
은 프로그램의 초기화 부분에서 가져온 프레임의 현재 크기입니다. bg
은 내 콘텐츠 창에서 유일한 요소입니다. 나는 frame.pack()
을 사용했다.
public void mouseMoved(MouseEvent e){
if((sizeX - 2) <= e.getX()){
changeCursor(new Cursor(Cursor.E_RESIZE_CURSOR), true);
}else{
changeCursor(new Cursor(Cursor.DEFAULT_CURSOR), false);
}
printInfo("Moved", e);
}
public void mouseDragged(MouseEvent e){
if(sizeX < e.getX() ||
sizeX > e.getX()){
resizeXE(e);
}
printInfo("Dragged", e);
}
void changeCursor(Cursor cursor, boolean resize){
if(resize){
resizeFlag = true;
}else{
resizeFlag = false;
}
bg.setCursor(cursor);
}
void resizeXE(MouseEvent e){
if(resizeFlag){
sizeX = e.getX();
((JFrame) SwingUtilities.getAncestorOfClass(JFrame.class, bg)).setSize(
sizeX, sizeY);
}
}
서쪽의 크기 조정을 구현하는 데 도움이 필요합니다. 나는 이것이 내가 북쪽과 남쪽면에서 도움을 필요로하지 않을 것이라고 생각한다.
보시다시피 setSize()
메서드를 사용하여 크기를 조정하려고합니다. 그러나 나는 그것을 서쪽에서 어떻게 사용할 수 있는지 보지 못했다. 대안에 대한 제안 사항이 있습니까?
의미가 있습니다. 나는 실제로 이것을 피하고 있었지만 지금은 이것을 시도 할 것입니다. – kir
나는 그것을 끝냈다. 그러나 it 's도. .. twitchy. 서쪽에 비해 동쪽 크기 조정은 훨씬 부드럽습니다. 이것은 분명히'setLocation'에 의해 발생합니다. 클리너 크기를 조정할 수 있습니까? – kir
@ user2280704 내 구현을 위해 [컴포넌트 크기 조정] (http://tips4java.wordpress.com/2009/09/13/resizing-components/)을 참조하십시오. 스냅과 같은 다른 기능을 지원하기 때문에 사용자의 것보다 더 복잡해 지겠지만 코드를 자세히 살펴보면 몇 가지 아이디어를 얻을 수 있습니다. – camickr