【问题标题】:Swing GUI moving when user enters text当用户输入文本时摆动 GUI
【发布时间】:2014-01-25 13:13:00
【问题描述】:

我正在尝试做一个相当基本的摆动 GUI,用户可以在其中输入一个 url,选择一个本地文件位置等。我正在使用多个布局管理器,包括 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);

【问题讨论】:

    标签: java swing user-interface


    【解决方案1】:

    “我的问题是,当用户将文本放入 optionsTxt jtextarea 时,某些组件会四处移动。有人知道我应该从哪里开始阻止这种情况发生吗?”

    首先将您的JTextArea 放入ScrollPanesetLineWrap(true)setWrapStyleWord(true)。您可能需要考虑使用您拥有的 JTextAreas 来执行此操作

    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 编辑您的帖子,以便我们测试您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-16
      • 1970-01-01
      • 2011-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多