gpt4 book ai didi

java - 具有用户输入/事件监听器的动态边框布局

转载 作者:行者123 更新时间:2023-12-02 04:15:54 24 4
gpt4 key购买 nike

我是事件监听器的新手。我发现了这个练习。我的目标是改变BorderLayout与用户输入。我尝试使用 DocumentListenerActionListener但我无法让它发挥作用。这是我可以编写的代码:

public class Eventlistenertest extends JFrame {

public Eventlistenertest(){
JPanel p1 = new JPanel(new BorderLayout(i, j)); // here is i and j.

p1.add(new JButton("East"), BorderLayout.EAST);
p1.add(new JButton("South"), BorderLayout.SOUTH);
p1.add(new JButton("West"), BorderLayout.WEST);
p1.add(new JButton("North"), BorderLayout.NORTH);
p1.add(new JButton("Center"), BorderLayout.CENTER);
p1.setBorder(new TitledBorder("Container of BorderLayout"));

JTextField VGap = new JTextField(35);
JTextField HGap = new JTextField(35);

JPanel p2 = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 20));
p2.add(new JLabel("HGap"));
p2.add(HGap);
p2.add(new JLabel("VGap"));
p2.add(VGap);
p2.setBorder(new TitledBorder("BorderLayout Properties"));

setLayout(new GridLayout(2, 1, 5, 5));
add(p1);
add(p2);

int i =Integer.parseInt(HGap.getText());
int j =Integer.parseInt(VGap.getText());
}

/** Main method */
public static void main(String[] args) {
Eventlistenertest frame = new Eventlistenertest();
frame.setTitle("ShowBorderLayout");
frame.setSize(500, 500);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}

我需要ij开头为零,并在 JTextField 之后更改它们输入。我怎样才能做到这一点?

最佳答案

首先查看 How to Use Text FieldsHow to Write an Action Listeners

本质上,一种方法是向您的字段添加一个 ActionListener,当用户按 Enter 时,向上布局

    ActionListener listener = new ActionListener() {

@Override
public void actionPerformed(ActionEvent e) {
int vgap = 0;
int hgap = 0;
if (VGap.getText().trim().length() > 0) {
try {
vgap = Integer.parseInt(VGap.getText());
} catch (NumberFormatException exp) {
System.out.println("Invalid number for vgap");
}
}
if (HGap.getText().trim().length() > 0) {
try {
hgap = Integer.parseInt(HGap.getText());
} catch (NumberFormatException exp) {
System.out.println("Invalid number for vgap");
}
}
borderLayout.setHgap(hgap);
borderLayout.setVgap(vgap);
p1.revalidate();
}

};

VGap.addActionListener(listener);
HGap.addActionListener(listener);

有一个要求,您首先应用于 p1BorderLayout 实例必须与您更新的实例相同。

您可以使用DocumentListener,但过程会变得更加复杂

关于java - 具有用户输入/事件监听器的动态边框布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33335665/

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