gpt4 book ai didi

java - 您能否保持对象在 Java Swing 面板上的位置?

转载 作者:行者123 更新时间:2023-11-29 04:04:38 25 4
gpt4 key购买 nike

我目前正在使用 Java Swing 设计一个计算器面板。但是,排列所有按钮是一件非常痛苦的事情,因为每当我添加新按钮或更改按钮大小时,它们总是会自行调整大小和重新定位。

是否有一种布局或东西可以“锁定”按钮的位置,以便在我移动/调整大小/添加其他按钮时它们不受影响?

谢谢,鲍勃

最佳答案

扩展 Tom 所说的...

要让组件变得不可见但仍保留其位置,您可以将它与一个空标签一起放置在 CardLayout 中,然后只需交换可见的标签即可。

您可以创建一个类来为您执行此操作,如下所示 main 仅显示了一个示例,如果您单击一个按钮,它会在保留其位置的同时被删除。我放入 showComponent/hideComponent 和 setVisible(t/f) - 取决于您喜欢的样式。

这可能无法准确回答您正在寻找的内容,但可能对您的部分应用程序有用。

public class Placeholder extends JPanel {
private static final long serialVersionUID = 1L;
private CardLayout cardLayout_;
public Placeholder(JComponent component) {
cardLayout_ = new CardLayout();
setLayout(cardLayout_);
add(component, "visible"); // the component
add(new JLabel(), "hidden"); // empty label
}
public void showComponent() {
cardLayout_.show(this, "visible");
}
public void hideComponent() {
cardLayout_.show(this, "hidden");
}
public void setComponentVisible(boolean visible) {
if (visible)
showComponent();
else
hideComponent();
}
public static void main(String[] args) {
JFrame f = new JFrame();
f.setLayout(new GridLayout(2,0));
for (int n = 1; n < 10; n++) {
JButton b = new JButton(n + "");
final Placeholder placeholder = new Placeholder(b);
f.add(placeholder);
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
placeholder.hideComponent();
}
});
}
f.pack();
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.setVisible(true);
}
}

关于java - 您能否保持对象在 Java Swing 面板上的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/870171/

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