gpt4 book ai didi

Java 可拉伸(stretch)的 JTextfield

转载 作者:行者123 更新时间:2023-11-30 04:10:09 28 4
gpt4 key购买 nike

我目前正在使用 Java 开发浏览器。我希望左上角有一个后退按钮,右侧有一个带有 URL 的 JTextfield。我希望按钮始终具有相同的大小,但文本字段可以更改其宽度以匹配 JFrame 的宽度。它不适用于 BorderLayout,我已经尝试过:

SpringLayout sl = new SpringLayout();
setLayout(sl);
sl.putConstraint(SpringLayout.WEST, back, 5, SpringLayout.WEST, this);
sl.putConstraint(SpringLayout.NORTH, back, 5, SpringLayout.NORTH, this);
sl.putConstraint(SpringLayout.WEST, addressBar, 5, SpringLayout.EAST, back);
sl.putConstraint(SpringLayout.NORTH, addressBar, 5, SpringLayout.NORTH, this);
sl.putConstraint(SpringLayout.SOUTH, back, 25, SpringLayout.NORTH, this);
sl.putConstraint(SpringLayout.SOUTH, addressBar, 25, SpringLayout.NORTH, this);
sl.putConstraint(SpringLayout.EAST, addressBar, 5, SpringLayout.EAST, this);

add(back);
add(addressBar);

其中“back”是一个 JButton,addressBar 是一个 JTextField。该按钮似乎可以工作,但地址栏根本无法绘制。

有什么建议吗?

最佳答案

有很多方法可以解决这个问题,其中一种实际上涉及通过嵌套 JPanel 的 BorderLayout。将按钮放入BorderLayout使用容器的BorderLayout.WEST位置,但将JTextField BorderLayout.CENTER放在同一个容器中,然后将该容器放入主容器BorderLayout.CENTER中。

GridBagLayout 也可以解决这个问题,但同样,最好/最简单的解决方案通常会涉及嵌套 JPanel(用于您的容器),每个 JPanel 都有自己的布局管理器。

<小时/>

编辑
例如:

import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.*;

public class BrowserFoo {

private static void createAndShowGui() {
JPanel topPanel = new JPanel(new BorderLayout(2, 2));
topPanel.add(new JButton("Back"), BorderLayout.WEST);
topPanel.add(new JTextField(20), BorderLayout.CENTER);

JPanel mainPanel = new JPanel(new BorderLayout());
mainPanel.add(topPanel, BorderLayout.NORTH);
mainPanel.add(Box.createRigidArea(new Dimension(400, 400)));

JFrame frame = new JFrame("BrowserFoo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(mainPanel);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);
}

public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGui();
}
});
}
}

请注意,如果您重新调整此 GUI 的大小,文本区域和按钮仍保留在正确的位置。

关于Java 可拉伸(stretch)的 JTextfield,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19821343/

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