2014-04-15 5 views
0

스크롤 패널 내부의 jpanel에 버튼이 추가 된 인벤토리 클래스를 만들고 GridBagConstarints를 사용하면 버튼이 자동으로 정렬됩니다. 버튼은 기본적으로 JButton을 확장하는 ranodomButton이라는 하나의 단일 클래스를 추가합니다. 크기, 색상, 텍스트 등은이 클래스에서 정의됩니다. 나는 기본적으로 코드를 여러 번이 줄을 실행하려는"인스턴스"사용? 두 번 이상

panelName.add(b, gridBagConstrainntsName); 

을하지만, 문제는 메신저 추측, 그것은 이전 버튼을 삭제입니다 :

randomButton b = new randomButton(); 

그때 사용 : 다음 메인 클래스에서 내가 사용 그것이 똑같은 것이기 때문에, 그것은 동일한 "Instance"가되는 것입니까? randomButton의 나는 간단히 많은 버튼을 만들 수 있으며, 그 다음에 그 벌금을 추가 할 수있다.하지만 같은 것을 2 개 추가하려고하면 에러가 난다. Ive는 다른 JButton에 b = 설정을 시도했지만 여전히 하나만 사용합니다. 어떤 해결책?

+2

'모든 해결책? '- 이미 말했듯이 "버튼을 간단하게 만들 수 있습니다". 모든 버튼 사이에서 항상 ActionListener를 공유 할 수 있으므로 여러 개의 리스너를 만들 필요가 없으므로이 작업을 수행 할 수 없습니다. – camickr

+0

참고 : 스윙이 오래된 것입니다. 가능한 경우 JavaFX로 바꾸십시오. –

답변

2

모든 솔루션?

"이미 많은 버튼을 만들 수 있습니다." 이것은 아마도 가장 쉬운 해결책입니다 (정확한 요구 사항을 알지 못함). 모든 버튼 사이에서 항상 ActionListener를 공유 할 수 있으므로 다중 리스너를 만들 필요가 없으므로이 작업을 수행 할 수 없습니다.

완전히 다른 경우에는 JTable을 만들어 그리드에 데이터를 표시 할 수 있습니다. JTable은 렌더러를 사용하여 버튼을 페인트하므로 TableModel에 데이터를 추가하기 만하면됩니다. 자세한 내용은 How to Use Tables에있는 스윙 튜토리얼의 섹션을 읽어보십시오. 그러나 이것은 색상과 크기를 다루는면에서 추가적인 복잡성을 초래합니다.

관련 문제