2014-01-25 3 views
0

사용자가 URL을 입력하고 로컬 파일 위치 등을 선택할 수있는 상당히 기본적인 스윙 GUI를 수행하려고합니다. boxlayout, borderlayout 및 flowlayout을 포함한 여러 레이아웃 관리자를 사용하고 있습니다. 코드는 다음과 같습니다. 내 문제는 사용자가 텍스트를 optionsTxt jtextarea에 넣을 때 일부 구성 요소가 움직이는 것입니다. 누구든지이 일을 멈추기 시작해야한다는 것을 알고 있습니까?사용자가 텍스트를 입력하면 스윙 GUI가 움직입니다.

Setup menu bar 
    JButton menu_File = new JButton("File"); 
    JButton menu_Edit = new JButton("Edit"); 
    JToolBar toolBar = new JToolBar(); 
    toolBar.add(menu_File); 
    toolBar.add(menu_Edit); 

    //Setup options area 
    JPanel options = new JPanel(); 
    options.setBorder(BorderFactory.createTitledBorder("Options")); 
    BoxLayout layout_Options = new BoxLayout(options, BoxLayout.Y_AXIS); 
    options.setLayout(layout_Options); 
    JLabel optionsLblURL = new JLabel("Enter URL:"); 
    optionsTxtUrl = new JTextArea(1,15);   
    JLabel chooseDestLbl = new JLabel("Choose save location:"); 
    chooseDest = new JButton("Browse"); 
    chooseDest.addActionListener(this); 
    options.add(optionsLblURL); 
    options.add(optionsTxtUrl); 
    options.add(chooseDestLbl); 
    options.add(chooseDest); 

    //Setup launch area 
    JPanel launch = new JPanel(); 
    launch.setBorder(BorderFactory.createTitledBorder("Launch")); 
    launchBtnStart = new JButton("Start Download"); 
    launchBtnStart.setVerticalAlignment(SwingConstants.CENTER); 
    launchBtnStart.setHorizontalAlignment(SwingConstants.CENTER); 
    launchBtnStart.addActionListener(this); 
    launch.add(launchBtnStart); 

    //Setup reporting area 
    JPanel logging = new JPanel(); 
    logging.setBorder(BorderFactory.createTitledBorder("Log")); 
    BoxLayout layout_Logging = new BoxLayout(logging, BoxLayout.Y_AXIS); 
    logging.setLayout(layout_Logging); 
    JTextArea loggingTxt = new JTextArea(3,10); 
    loggingTxt.setEditable(false); 
    logging.add(pb); 
    logging.add(loggingTxt); 

    //Add components to window   
    BorderLayout borderLayout = new BorderLayout(); 
    setLayout(borderLayout); 
    add("North", toolBar); 
    add("West", options); 
    add("East", launch); 
    add("South", logging); 

    setVisible(true); 

답변

1

은 "내 문제는 일부 구성 요소는 사용자가 optionsTxt에 텍스트를 박았 때 내가 이런 일을 중단하기 시작해야하는 위치 JTextArea에. 누구나 알고 주위를 이동하는 것입니다?" 당신의 JTextAreaScrollPane A의와 setLineWrap(true)setWrapStyleWord(true)을 넣어

시작. 당신은 그들이 텍스트 영역

  • public void setWrapStyleWord(boolean word)의 오른쪽 가장자리에 도달하면 랩이 당신의 라인을 만들 것입니다 당신이

    JTextArea optionsTxtUrl = new JTextArea(1,15); 
    optionsTxtUrl.setLineWrap(true); 
    optionsTxtUrl.setWrapStyleWord(true); 
    JScrollPane scroll = new JScrollPane(optionsTxtUrl); 
    
    options.add(scroll); // take out options.add(optionsTxtUrl); 
    

    이 모두 JTextArea들과 함께이 일을 고려할 수 있습니다 - 포장의 스타일을 설정합니다 텍스트 영역이 줄을 감싸는 경우에 사용됩니다. true로 설정하면 너무 길어서 할당 된 너비에 맞지 않으면 단어 경계 (공백)에서 줄 바꿈됩니다. false로 설정하면 행이 문자 경계에서 줄 바꿈됩니다. 기본적으로이 속성은 false입니다.

  • public void setLineWrap(boolean wrap) - 텍스트 영역의 줄 바꿈 정책을 설정합니다. true로 설정하면 선이 너무 길어서 할당 된 너비에 맞지 않을 경우 줄 바꿈됩니다. false로 설정하면 선이 항상 언 래핑됩니다. PropertyChange 이벤트 ("lineWrap")는 정책이 변경되면 시작됩니다. 기본적으로이 속성은 false입니다. 이 방법으로 문제가 해결되지 않으면


, 당신은 그래서 우리는 문제를 테스트 할 수 있습니다 a Minimal, Complete, Tested and Readable example로 게시물을 편집해야합니다.

관련 문제