gpt4 book ai didi

java - 当用户输入文本时 Swing GUI 移动

转载 作者:行者123 更新时间:2023-12-01 13:35:01 24 4
gpt4 key购买 nike

我正在尝试做一个相当基本的 Swing 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);

最佳答案

"My problem is that some of the components are moving around when the user puts text into the optionsTxt jtextarea. Anyone know where I should start to stop this happening?"

首先将 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(booleanwrapp) - 设置文本区域的换行策略。如果设置为 true,如果行太长而无法适应分配的宽度,则行将被换行。如果设置为 false,则行将始终展开。当策略更改时,将触发 PropertyChange 事件(“lineWrap”)。默认情况下,此属性为 false。

<小时/>

如果这不能解决您的问题,您应该使用 a Minimal, Complete, Tested and Readable example 编辑您的帖子这样我们就可以测试您的问题。

关于java - 当用户输入文本时 Swing GUI 移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21351007/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com