gpt4 book ai didi

java - JFrame 中仅显示一个组件

转载 作者:行者123 更新时间:2023-12-01 20:00:16 25 4
gpt4 key购买 nike

作为对我的加密项目的改进,我决定制作一个小 GUI。然而,当我运行该程序时,只有顶部元素显示在屏幕上,并且它似乎掩盖了其他元素,尽管我无法检查。有谁知道为什么?

下面是我的完整代码,除了 e()d() 之外,因为它们只是加密字符串,与 GUI 无关。我还想要一种在不编辑加密的情况下尽可能加快速度的方法,只是为了使其尽可能好。

@SuppressWarnings("serial")
public class EncDecExample extends JFrame implements ActionListener {
final static JPanel top = new JPanel();
final static JPanel mid = new JPanel();
final static JPanel bot = new JPanel();
final static JTextField in = new JTextField(10);
final static JTextField out = new JTextField(10);
final static JButton enc = new JButton("Encrypt");
final static JButton dec = new JButton("Decrypt");
final static JFrame f = new JFrame("Encryption/decryption");

public static void main(String[] args) {
// EncDec.exampleImplement();

f.setSize(500, 500);
f.setResizable(false);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
out.setEditable(false);
out.setText("Hello");
in.setVisible(true);
out.setVisible(true);
enc.setVisible(true);
dec.setVisible(true);
top.add(in);
mid.add(enc);
mid.add(dec);
bot.add(out);
f.add(top);
f.add(mid);
f.add(bot);
f.setVisible(true);
}

@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == enc && !in.getText().equalsIgnoreCase("")) {
out.setText(EncDec.e(in.getText(), 5));
}
else if(e.getSource() == dec && !in.getText().equalsIgnoreCase("")) {
out.setText(EncDec.d(in.getText()));
}
}
}

最佳答案

JFrame 的内容 Pane 有一个 BorderLayout。如果您将组件放置在没有任何约束的 BL 中,它最终会出现在 CENTER 中。中心只能显示一个组件。

为了立即生效,我建议:

f.add(top, BorderLayout.PAGE_START);
f.add(mid);
f.add(bot, BorderLayout.PAGE_END);

其他要点。

  1. 取出 f.setSize(500, 500); 并在 setVisible(true) 之前调用 pack()
  2. 为了更好地结束 GUI,请将 f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 更改为 f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
  3. in.setVisible(true); 除了框架本身,把它们都去掉。当组件被添加到顶级容器并且该容器本身变得可见时,它会自动变得可见。

  4. public class EncDecExample extends JFrame
    更改为
    public class EncDecExample
    此代码保留对框架,这是正确的方法。

关于java - JFrame 中仅显示一个组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59007982/

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