【发布时间】:2021-07-08 00:13:21
【问题描述】:
所以我在Java中得到了那个登录类,你可以在最后找到它。 当我尝试为用户名和密码输入添加 JTextField 时,整个屏幕变白,就像它在某处呈现一样。我看不出我做错了什么。
我正在尝试使用 IntelliJ 在代码中对 UI 进行编程。
我不想使用 NetBeans 或 Eclipse GUI 工具,因为我觉得直接在代码中学习如何做会更好。
我创建的 JTextField 类可以在下面的代码末尾找到。
在整个场景中,我这样做对吗?
这就是我在 Java 中构建接口类的方式?
在网上很难找到好的材料,我正在尝试将所知道的东西应用到java中其他语言的编程中......
该类将被添加到主类中的一个主框架中,该类将是唯一的一个框架,其他类都将是面板。
感谢大家阅读,有代码:
package com.GUI;
import com.components.JButtons;
import com.components.JLabels;
import com.components.JPanels;
import javax.swing.JPanel;
import javax.swing.JTextField;
//import javax.swing.JPanel;
//import javax.swing.JTextField;
import java.awt.Color;
import java.awt.Dimension;
//import java.awt.Color;
//import java.awt.Dimension;
public class Login2 extends JPanel {
JButtons Entrar = new JButtons(125, 25, "ENTRAR");
JButtons Cadastrar = new JButtons(125, 25, "CADASTRAR");
JButtons Sair = new JButtons(125, 25, "SAIR");
public Login2() {
this.setBounds(0, 0, 250, 540);
this.setLayout(null);
this.add(Container());
}
private JPanels Container() {
JPanels Container = new JPanels(0, 0, 250, 540);
Container.setLayout(null);
Container.setBackground(Color.blue);
Container.add(Logo());
Container.add(Formulario());
Container.add(ButtonsPanel());
return Container;
}
private JPanels Logo(){
JPanels Logo = new JPanels(75,30,100,100);
Logo.setBackground(Color.red);
return Logo;
}
private JPanels Formulario(){
JPanels Formulario = new JPanels(25, 150, 200, 160);
Formulario.setBackground(Color.YELLOW);
Formulario.setLayout(null);
Formulario.add(FSCPanel());
Formulario.add(UsuarioPanel());
Formulario.add(UsuarioFieldPanel());
Formulario.add(SenhaPanel());
Formulario.add(SenhaFieldPanel());
return Formulario;
}
private JPanels FSCPanel(){
JPanels FSC = new JPanels(25, 5, 150, 30);
FSC.add(new JLabels("Faça seu LogIn!", 20, 1));
return FSC;
}
private JPanels ButtonsPanel(){
JPanels ButtonsLabel = new JPanels(50, 320, 150, 130);
ButtonsLabel.setLayout(null);
ButtonsLabel.add(EPanel());
ButtonsLabel.add(CPanel());
ButtonsLabel.add(SPanel());
return ButtonsLabel;
}
private JPanels EPanel(){
JPanels EPanel = new JPanels(10, 5, 125, 30);
EPanel.add(Entrar);
return EPanel;
}
private JPanels CPanel(){
JPanels CPanel = new JPanels(10, 40, 125, 30);
CPanel.add(Cadastrar);
return CPanel;
}
private JPanels SPanel(){
JPanels SPanel = new JPanels(10, 75, 125, 30);
SPanel.add(Sair);
return SPanel;
}
private JPanels UsuarioPanel(){
JPanels UsuarioPanel = new JPanels(10, 40, 50, 20);
UsuarioPanel.add(new JLabels("Usuario:", 12, 1));
return UsuarioPanel;
}
private JPanels UsuarioFieldPanel(){
JPanels UsuarioFieldPanel = new JPanels(10, 63, 150, 30);
UsuarioFieldPanel.setBackground(Color.GRAY);
UsuarioFieldPanel.setLayout(null);
//UsuarioFieldPanel.add(UsuarioField());
return UsuarioFieldPanel;
}
private JTextField UsuarioField(){
JTextField UsuarioField = new JTextField();
UsuarioField.setBounds(0, 0, 20, 10);
UsuarioField.setPreferredSize(new Dimension(20, 10));
UsuarioField.setMaximumSize(new Dimension(20, 10));
return UsuarioField;
}
private JPanels SenhaPanel(){
JPanels Senha = new JPanels(10, 100, 50, 20);
Senha.add(new JLabels("Senha:", 12, 1));
return Senha;
}
private JPanels SenhaFieldPanel(){
JPanels SenhaFieldPanel = new JPanels(10, 125, 150, 30);
SenhaFieldPanel.setBackground(Color.GRAY);
SenhaFieldPanel.setLayout(null);
//SenhaFieldPanel.add(SenhaField());
return SenhaFieldPanel;
}
private JTextField SenhaField(){
JTextField SenhaField = new JTextField();
SenhaField.setBounds(0, 0, 0, 0);
SenhaField.setPreferredSize(new Dimension(0, 0));
SenhaField.setMaximumSize(new Dimension(0, 0));
return SenhaField;
}
}
【问题讨论】:
-
对此我不确定,但为什么将边界设置为全零,以及尺寸的尺寸全为零?
-
@MarcusSlover 您是指每个组件还是关于 JTextfield 的组件?即使没有尺寸,屏幕也会变白,该类中的任何类型的 JTextField 都会使屏幕变白......
-
1) Java GUI 必须在不同的操作系统、屏幕尺寸、屏幕分辨率等上使用不同语言环境中的不同 PLAF。因此,它们不利于像素完美布局。而是使用布局管理器,或combinations of them 以及white space 的布局填充和边框。 2) 请学习常见的 Java 命名法(命名约定 - 例如
EachWordUpperCaseClass、firstWordLowerCaseMethod()、firstWordLowerCaseAttribute,除非它是UPPER_CASE_CONSTANT)并始终如一地使用它。 -
.. 3) 为了尽快获得更好的帮助,edit 添加minimal reproducible example 或Short, Self Contained, Correct Example。 4) 以最小尺寸提供 ASCII 艺术或 GUI 的 预期 布局的简单绘图,如果可调整大小,则具有更大的宽度和高度 - 以显示应如何使用额外空间。 5) “但这让我想到了其他问题:” 每个 SO Q&A 都应该专注于 一个 问题。这样其他人以后更容易找到。
标签: java swing jtextfield