2014-01-25 66 views
0

我正在嘗試做一個相當基本的圖形用戶界面,用戶可以在其中輸入網址,選擇本地文件位置等。我正在使用多種佈局管理器,包括boxlayout,borderlayout和flowlayout。代碼如下。 我的問題是,當用戶將文本放入optionsTxt jtextarea時,某些組件正在移動。任何人都知道我應該開始停止這種情況發生?當用戶輸入文字時,圖形用戶界面移動

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中。任何人都知道我應該開始停止這種情況發生?」

開始把你在JTextArea一個ScrollPanesetLineWrap(true)setWrapStyleWord(true)。您可能要考慮具有JTextArea是你有

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); 

這會讓你的行這樣做,當他們到達文本區域

  • public void setWrapStyleWord(boolean word)的右邊緣包裹 - 設置捆綁的風格如果文本區域正在換行,請使用此選項。如果設置爲true,則行將被包裹在單詞邊界(空格)處,如果它們太長而不適合分配的寬度。如果設置爲false,則線條將被包裹在字符邊界處。默認情況下,該屬性爲false。

  • public void setLineWrap(boolean wrap) - 設置文本區域的換行策略。如果設置爲true,則行將被包裹,如果它們太長而不能適應分配的寬度。如果設置爲false,則線條將始終展開。更改策略時觸發PropertyChange事件(「lineWrap」)。默認情況下,該屬性爲false。


如果這沒有解決您的問題,您應該a Minimal, Complete, Tested and Readable example編輯您的帖子,所以我們可以測試出你的問題。