2009-07-30 4 views
-1

"파일"을 왼쪽 상단에 쓴 다음 맨 위 오른쪽 모서리에 단추를 추가하려면 어떻게합니까?JPanel에서 GUI 버튼 렌더링

public class FileViewer extends JPanel 
{ 
    private static final long serialVersionUID = 1L; 

    public void paintComponent(Graphics g) 
    { 
     Graphics2D graphic = (Graphics2D)g; 
     graphic.drawString("HTML File:", 14, 15); 
    } 
} 
+0

코드 게시가 시작됩니다. 이 "파일"이 메뉴로되어 있습니까? – OscarRyz

+9

왼쪽 상단 구석 ... 뭐라고 요? 잠깐, 잠깐 ... 내가 추측 할 수 있니? 그게 조랑말이야? 오, 그거 조랑말이야, 그렇지? 조랑말! 그것은 A PONY의 왼쪽 상단입니다 !! 포니! – zombat

+0

좀 더 구체적으로하는 것이 좋을 것입니다 – akf

답변

1

저는 여기서 사지에 나가서 스윙 (또는 그 문제에 대해서는 SWT)과 포지셔닝을한다고 가정합니다.

요소를 지능적으로 배치하려면 레이아웃 관리자가 있어야 컨테이너 (창, 패널 등)가 필요합니다. 레이아웃 관리자는 컨테이너 내에서 자식 컨트롤의 위치를 ​​담당합니다.

예를 들어 Java 자습서 here은 Java와 함께 제공되는 많은 표준 레이아웃 관리자를 사용하는 방법을 보여줍니다. Java와 함께 제공되지 않는 것도 있습니다. 특히 플랫폼 고유의 모양과 느낌을 가진 SWT가 특히 중요합니다.

업데이트 : 그냥 그래픽이 paintComponent에서 처리 할 수있는 텍스트를 작성하는 방법을 찾고 이후, 나는 완전히 오프 기본이었다 당신이 머무르는 물건으로 볼

.

당신은 이미 Graphics2D.drawString(String,x,y)을 사용했습니다. xy은 그릴 위치를 지정합니다.

당신이해야 할 일은 xy을 오른쪽 상단 모서리에 그려야합니다. 실제로 변경해야하는 것은 x뿐입니다.

여기가 까다로워집니다. 작업 공간의 크기에 따라 y을 계산해야합니다. 텍스트 문자열의 크기는 이고입니다.

나는 그래픽 출력을 해본 적이 없다 이후 자바에 대한 세부 사항을 모르지만 그것은 가능성이 :

사용 가능한 페인트 사각형을 반환 graphic에 호출 할 수있는 방법이있다
  • ; 이 값은 최대 y 값이됩니다.
  • 문자열을 다른 방법으로 전달해야 글꼴 정보에 필요한 너비가 필요합니다.

두 가지 코드를 모두 가져 왔으면 첫 번째 코드에서 두 번째 코드를 빼고 코드를 오른쪽 상단에서 완료하려면 y 값으로 시작해야합니다.

+0

@pax : limb broken :-) –

+1

그래, 나는 몸을 털어 내고 움직이면서 (품위있게 보이려고) 노력할 것이다. :-) – paxdiablo

7

손으로 모든 구성 요소를 페인팅하는 것은 매우 문제가됩니다.

인터페이스를 그리는 기존 구성 요소를 사용하는 것이 좋습니다. 이 경우

당신이 JFrame의를 통해 JFrame의와의 JButton를 사용할 수있는 스윙을 사용하여 ...이처럼

:

alt text http://img36.imageshack.us/img36/4337/imagen2rrq.png

이 훨씬 쉬울 것이다.

다음은이 샘플 코드입니다. 분명히 그냥 맛입니다. 테스트를 수행 비트를 읽기 Swing tutorial

import javax.swing.JFrame; 
import javax.swing.BoxLayout; 
import javax.swing.JLabel; 
import javax.swing.JButton; 
import javax.swing.Box; 
import javax.swing.JPanel; 
import java.awt.BorderLayout; 


public class SuchCode { 
    public static void main(String [] args) { 
     JFrame frame = new JFrame("How can I... "); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     JPanel panel = new JPanel(); 
     BoxLayout boxLayout = new BoxLayout(panel , BoxLayout.LINE_AXIS); 
     panel.setLayout(boxLayout ); 

     panel.add(new JLabel("File")); 
     panel.add(Box.createHorizontalGlue()); 
     panel.add(new JButton("Button")); 

     frame.add(panel , BorderLayout.NORTH); 

     frame.pack(); 
     frame.setVisible(true); 
    } 
} 

을 읽는 고려하고, 많은 당신이 원하는대로 돌아와. 나는 당신을 도우려고 기뻐할 것이다 (그리고 나는 다른 사람들도 좋은 자바 놈들도있을거야)

0

add() 메소드를 사용하여 생성자에 버튼을 추가 할 수있다. 버튼이 오른쪽으로 그려 지도록 정렬을 오른쪽으로 설정할 수 있습니다.

일반적으로 페인트 방법은 화면에 UI 컨트롤을 추가하는 데 사용되지 않습니다.

이렇게 말씀 드리면, 귀하의 질문에 대한 답을 다른 사람들이 게시 한 의견을 읽으시기 바랍니다.

관련 문제