【问题标题】:JTextField not appearing in GUIJTextField 未出现在 GUI 中
【发布时间】:2014-12-15 18:12:31
【问题描述】:

我想将 JTextField 添加到框架的北部区域,并将面板(保存相同 JTextField 的副本)添加到东部区域。

但只出现了北部地区的田野。东部地区的面板在那里,但问题是该字段不在面板中。

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

public class Gui {

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        JPanel panel = new JPanel();

        frame.getContentPane().setBackground(Color.BLACK);
        panel.setBackground(Color.YELLOW);

        JTextField field = new JTextField("Your name");

        panel.add(field);
        frame.add(BorderLayout.NORTH, field);
        frame.add(BorderLayout.EAST, panel);

        frame.setSize(300, 300);
        frame.setVisible(true);
       }
    }

【问题讨论】:

  • 您不能在 2 个位置设置相同的 jtextfield,但您可以共享相同的文档。您需要创建新文档。为什么您需要将相同的 jtextfield 添加到 2 个位置您要做什么? ?

标签: java swing user-interface jtextfield


【解决方案1】:

如果你想要两个单独的字段,你需要有两个单独的 JTextField 对象:尝试添加

JTextField field2 = new JTextField("Your second field");

并将frame 上的第一个add() 调用更改为

frame.add(BorderLayout.NORTH, field2);

这会产生

我认为这是你想要的。

【讨论】:

  • 谢谢,我忘了Java是按值传递的。
  • @lddangsta 这不完全是问题,问题是组件只能驻留在单个父容器中,根本不可能一次将组件的单个实例添加到多个容器中
  • 好吧,但是为什么会出现frame的字段而不是panel的字段呢?
  • 因为你是第二个添加的。
  • 先添加面板后frame的字段仍然出现。
猜你喜欢
  • 2018-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-04
  • 2012-01-16
  • 2016-07-19
  • 1970-01-01
相关资源
最近更新 更多