2012-05-01 4 views
1

스윙 GUI를 만들고 있는데, JTextField 시리즈를 사용하고 있습니다. 텍스트 필드에 사용자 지정 속성을 추가 할 수 있어야합니다. 이것은 예를 들어 초점이 없어지면 계산을 완료하는 데 사용됩니다. 내가 미리 정의 된 값을가집니다 텍스트 필드를 원하는사용자 지정 구성 요소

JTextField1.getCustomePram() * user input 

, 그것은 £ 20 * 5를 곱하는 그래서 기본 PARAM 20되며 사용자의 수량을 놓고, 초점의 손실에 대한 것입니다 계산이 완료됩니다.

GUI를 구축하기 위해 Netbeans를 사용하고 있는데, JTextField을 확장 해 보았습니다.하지만 솔직히 말해서 무엇을해야할지 모르겠습니다. 또는 조언을 듣거나 완전히 잘못 알고 싶습니다.

+1

은 속성 유형에 따라 다르며 어떤 속성을 추가해야하는 이유는 무엇입니까? – mKorbel

+0

미리 정의 된 값을 갖는 텍스트 필드를 원한다면 £ 20 * 5를 곱하는 것입니다. 따라서 기본 매개 변수는 20이 될 것이고 사용자는 수량을 넣을 것입니다 포커스를 잃으면 계산이 완료됩니다. WChargin이 포커스 질문에 답변했으며 이제 사용자 지정 매개 변수에 대한 약간의 도움이 필요합니다. – user1368528

+0

그런 다음 [대답을 수락하는 것을 잊지 마십시오] (http://meta.stackexchange.com/a/65088/164879) – mKorbel

답변

4

, 그 증식을위한 £ 20 * 5. 그래서 기본 PARAM 것 20이라고하면 사용자는 수량을 입력하고 초점을 잃으면 계산이 완료됩니다. .. 내가 완전히 잘못 알고 있다면 알려주세요.

완전히 잘못되었습니다.

이렇게하려면 단가 (£ 20)에 사용할 수없는 텍스트 필드 또는 라벨을 사용하고 수량 (5)은 JSpinner을 사용할 수 있습니다. 포커스 손실에 대한 계산을 수행하는 대신 add a change listener을 입력하고 수량이 변경된 경우 '실제 시간'에 주문한 항목의 새 소계 (관련이있을 경우 총)를 표시합니다.

Java에서 아이디어를 구현하는 방법을 살펴볼 필요가 있습니다.

보기 좋은 곳은 Visual Guide to Swing Components입니다. 복잡한 구성 요소 그룹의 레이아웃에서이를 결합하십시오.

+2

나는 그 때 +1 할 수 있었다.JTextField를 확장하고 이상한 일을하는 데 많은 어려움을 겪는 대신 스스로 괜찮은 UI를 갖춘 적절한 솔루션을 제공하십시오. 나는 좋아한다. – Robin

+0

그래, 내가 너를 도와 주셔서 고맙다. 어떻게 해야할지 다시 한번 생각해 보겠다. 나는 자바를 처음 접하고 PHP 배경에서왔다. Java로 아이디어를 구현하는 방법을 알아야합니다. – user1368528

+0

세 번째 링크로 수정을 참조하십시오. 다행스럽게도 나는 당신을 더 나은 접근 방식으로 이야기 할 수 있었고, 사용자들은 당신에게 감사 할 것입니다. :) –

4

user1329572에 따르면 JTextField을 서브 클래스 화 (또는 )해야 할 것입니다. 다음과 같이이 작업을 수행 할 수 있습니다

public class MyTextField extends javax.swing.JTextField { 
    private String /* or whatever type */ myCustomParam; 

    public String getCustomParam() { 
     return myCustomParam; 
    } 

    public void setCustomParam(String param) { 
     myCustomParam = param; 
    } 
} 

외부에서 당신이 JTextField를 사용해야합니다, 당신은 또한 MyTextField을 사용할 수 있습니다. 다른 모든 기능은 계속 작동합니다. 초점에 관한

: 초점을 감지 할 수는 FocusAdapter 사용 :

MyTextField mtf = new MyTextField(); 
mtf.addFocusListener(new java.awt.event.FocusAdapter() { 
    @Override 
    public void focusLost(java.awt.event.FocusEvent e) { 
     System.out.println("I lost focus."); 
    } 
} 
내가 미리 정의 된 값을가집니다 텍스트 필드를 원하는
+0

user1329572 및 WChargin 도움에 감사드립니다. 그 맞춤 매개 변수는 netbeans의 속성 메뉴를 통해 설정할 수 있습니까? 생성 된 코드를 보면 그 값을 설정할 수있는 방법이없는 것 같습니까? – user1368528

+0

값을 설정하려는 곳에는 setCustomParam (value) 코드를 입력하십시오. 여기서 value는 설정하려는 값입니다. – wchargin

관련 문제