2014-01-25 40 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编辑您的帖子,所以我们可以测试出你的问题。