java - JFrame 标签出现重叠
问题描述
我刚刚编写了JFrame
一个包含一组JLabel
组件的程序。该数组获取由 for 循环分配的单个标签的位置:
for(int i=0; i<label_entries.length; i++){
label_entries[i].setLocation(10, i*30);
label_entries[i].setSize(120,30);
dialog.add(label_entries[i]);
}
不要混淆,我的框架名称是“对话框”。
有一个简单的问题:for 循环不像 for 循环那样工作,我不知道为什么,这是我框架中的结果:
伊姆古尔。
不要关心单个标签条目,有趣的是Telefon
.
如果我将循环的开头设置为以下,这是同样的问题,只是使用了另一个标签。
for(int i=0; i<label_entries.length-1; i++){...}
这是完整的代码
JFrame dialog = new JFrame();
dialog.setBounds(25, 50, 500, 500);
dialog.setTitle("Eintrag hinzufügen");
dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
dialog.setVisible(true);
JLabel[] label_entries = new JLabel[11];
JTextField[] textfields = new JTextField[11];
label_entries[0] = new JLabel("Vorname :");
label_entries[1] = new JLabel("Nachname :");
label_entries[2] = new JLabel("Nummer :");
label_entries[3] = new JLabel("Geburtstag :");
label_entries[4] = new JLabel("Land :");
label_entries[5] = new JLabel("PLZ :");
label_entries[6] = new JLabel("Stadt :");
label_entries[7] = new JLabel("Strasse :");
label_entries[8] = new JLabel("Hausnummer :");
label_entries[9] = new JLabel("E-Mail :");
label_entries[10] = new JLabel("Telefon :");
for(int i=0; i<label_entries.length; i++){
label_entries[i].setLocation(10, i*30);
label_entries[i].setSize(120,30);
dialog.add(label_entries[i]);
}
这应该更容易理解。
解决方案
一个明显的问题是您正在设置组件的绝对位置。通常 aLayoutManager
用于此目的。
要清除 aJFrame
的内容窗格的默认布局管理器,请null
在创建框架后将其设置为。
JFrame dialog = new JFrame();
dialog.setLayout(null);
推荐阅读
- javascript - 检查对象数组中的任何键是否包含来自数组数组对象的值的最佳方法是什么?
- ios - 在运行时更新 Apple 室内地图的可能性?
- python - Python NN - 尝试创建人脸分类(区分不同的人脸)但结果不佳
- mysql - 过滤雄辩
- php - 我不能在弹性搜索中嵌套添加
- azure - Azure 公告:Web 端口应限制在与您的 VM 关联的 NSG 上
- azure - Azure Event Grid Cloud Events Schema V1.0 with Azure Event Grid Domains and Custom Topics 文档不清楚
- java - 如何减去或添加两个坐标
- python-3.x - 服务器端上一页调用不起作用
- sql-server - 使用 FunctionApp 从 Azure 存储到 Azure SQL Server