2010-07-15 8 views
2

OK 그래서이자바 애플릿 버튼

  • BorderLayout.CENTER 등이 애플릿 그게 전부가 - (이 JPanel의 인 이내)
  • BorderLayout.EAST을 - (이 새로운 GridLayout과 인 내 (4,5)
  • BorderLayout.SOUTH -

어쨌든 (이것은 텍스트 영역입니다 내), 애플릿, 나는 그들이 내 생각이 페인트하지 않는 그들을 볼 수있는 버튼 위에 마우스를해야하지만 추가 해요. 그것들은 init() 메소드에서 ... 그래서 나는 내가하는 일을 모른다. 왜 이렇게하는지.

setLayout(new BorderLayout()); 
JPanel invOne = new JPanel(new GridLayout(5,4)); 
JPanel game = new JPanel(); 
add(invOne, BorderLayout.EAST); 
add(game, BorderLayout.CENTER); 
add(c, BorderLayout.SOUTH); 

invOne.setBounds(416,0, 60, 28); 

for (int i = 0, j = 20; i < 20; i = i+1, j = j-1) { 
    invOne.add(new JButton("SLOT " + j)); 
    invOne.setBounds(32,32,100,100); 
    invOne.setFocusable(false); 
} 

game.setBounds(0,0, 416, 288); 
repaint(); 
+0

다시 한 번 문제를 해결하는 데 도움이되지 않는 임의의 코드 비트를 게시합니다. 과거에 SSCCE를 요청 받았습니다. 우리가 시간을 낭비하지 않도록 작성하고 게시하는 방법을 배우십시오. 이번에는 어리석은 실수를 추측합니다. 스윙 튜토리얼에는 예제가있다. 그들을 다운로드하고 테스트하여 적절한 질문을 게시하십시오. 예, 자습서에는 간단한 JApplet 예제가 있습니다. – camickr

+0

내 게시물 몇 개를보고 SSCCE를 추가했습니다. – nn2

+0

추 신 : 기술적으로 나는 적절한 질문을 게시했습니다. – nn2

답변

2

모든 setBounds() 호출을 사용하여 수행하려는 것은 무엇입니까? pack()의 내부 크기에 따라 패널 크기를 설정하거나 한 번 경계를 패널 표시 위치로 설정합니다. 특히 크기가 32x32 픽셀 인 통화는 전혀 도움이되지 않습니다.


편집 :

나는이 문제를 발견는 하나 다른 포스터가 언급 한 바와 같이

  • 것은, 당신은 스윙과 AWT의 성분을 혼합하고 있습니다. 그건 잘 작동하지 않아. 본질적으로, 사용하는 구성 요소 중 일부가 처음에는 "J"이면, 모든 구성 요소에 대해 "J"를 사용하는 것이 좋습니다. AWT는 이제 "오래된 학교"로 간주됩니다. GUI에서 사용되는 일부 클래스와 구성 요소에는 J가 없으므로 다소 혼란 스럽습니다. 나는 좋은 예를 가지고 신중하게 일하거나 수업을 들여다 볼 필요가 있다고 생각합니다.

  • 어떤 이유에서든 애플릿은 TextArea (현재 JTextArea라고 함)에 명시 적 행/열 개수를 제공 할 때까지 제대로 작동하지 않으려했습니다. 나는 new TextArea()new JTextArea(3,20)으로 바 꾸었습니다.

  • 가장 큰 문제는 비어있는 paint() 방법 일 수 있습니다. 애플릿이 어떻게 표시되는지 궁금합니다. paint() 메소드를 제거 할 수있었습니다. 나는 super.paint()에 전화하여 그것을 고쳤다.

  • 마지막으로 클래스 이름 (예 : bl)은 대문자로 시작해야합니다. IdeOne의 컴파일러가 저를 불평했습니다.

Here's my fixed code.

해피 해킹!

+0

여기 코드는 itSELF입니다. http://www.dasdas.pastebin.com/ftwpx7rK 그냥 GUI가 있습니다 ... 그리고 컴파일을 시도했을 때 C : \ Documents and Settings \ djasnowski \ My Documents \ bl.java : 33 : 기호 기호를 찾을 수 없습니다. 메소드 pack() 위치 : class bl \t \t this.pack(); – nn2

+1

곧 수정 될 수 있기를 바랍니다. 다시보고 할게. –

+0

알았어요. 애플릿을 JApple로 바꿨지 만 회색 jPanel이 그려진 타일 (drawImage) 타일을 겹치게되었습니다 ... – nn2

1

패널에 모든 구성 요소를 추가 한 후, 당신은 명시 적은 "팩()"(또는 "재 페인트()") 메서드를 호출합니까? 이러한 메서드를 호출하지 않으면 프레임에 그래픽 문제가 발생할 수 있습니다.

+0

OK, 코드를 추가했습니다. 보시다시피 repaint()를 추가했지만 운이 없다 ... (덧붙여서 프레임이 아닌 애플릿 임) – nn2

2

동일한 문제를 설명하는 one page (in german language)이 있습니다. JButton 위젯은 해당 항목 위에 마우스를 올리면 표시됩니다.

AWT 및 Swing 구성 요소/위젯이 혼합되어 있다는 문제점이있었습니다.이 경우 코드 조각에서 볼 수 없지만 java.awt.* 가져 오기가있는 경우 사용하지 않도록 설정하고 스윙 클래스 만 사용하고 다시 시도하거나 최선을 다할 수 있도록 코드를 리팩토링하십시오.

또 다른 제안은 모든 버튼에 대해 명시 적으로 setVisible(true)을 수행하는 것이지만 질문자는 자신의 경우에는 도움이되지 않는다고 말했습니다.

1

애플릿에서 스윙 구성 요소를 사용하고 있습니다. JApplet을 사용해야합니다. extends Appletextends JApplet으로 변경하십시오.