我是相当新的这和我下面的教程与一切工作的伟大。但是,在添加 JTextField
,的 JFrame
变成纯灰色背景。我调用的gui类 JFrame
从main.java,所以我尝试 JFrame
只有main.java中的文本字段,但它也有同样的问题。在文本字段中添加和删除组件也没有起到任何作用。把它放在面板上没有帮助(面板与标签配合得很好)。
public class GUI extends JFrame {
JButton button;
GUI(){
this.setTitle("Visualization");
this.setSize(1200, 800);
this.setResizable(false);
this.setLayout(null);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
ImageIcon image = new ImageIcon("Default/WhiteCatPFP.jpg");
this.setIconImage(image.getImage());
//this.getContentPane().setBackground(Color.BLACK);
Border border = BorderFactory.createLineBorder(Color.green, 3);
JLabel label = new JLabel();
label.setForeground(Color.GREEN);
label.setText("Bro, do you even code?");
label.setBackground(Color.BLACK);
label.setHorizontalAlignment(JLabel.CENTER);
label.setOpaque(true);
label.setBorder(border);
label.setFont(new Font(this.getFont().getName(), Font.PLAIN, 30));
//label.setVerticalAlignment(JLabel.TOP);
//label.setFont(new Font("MV Boli", Font.PLAIN, 20));
button = new JButton();
button.setFocusable(false);
button.setForeground(Color.GREEN);
button.setBackground(Color.BLACK);
button.setOpaque(true);
button.setBorder(border);
button.setText("Baka");
button.setFont(new Font(this.getFont().getName(), Font.PLAIN, 20));
button.setBounds(50, 10, 100, 90);
button.addActionListener(e -> System.out.println("Epic")); // Called lambda
JTextField aTextField = new JTextField("Hello"); // <-------------------- Error inducing!
aTextField.setBounds(0, 400, 400, 200);
JPanel panelOne = new JPanel();
panelOne.setBounds(0, 0, 400, 200);
panelOne.setLayout(new BorderLayout());
JPanel panelTwo = new JPanel();
panelTwo.setBounds(0, 200, 400, 200);
panelTwo.setLayout(new BorderLayout());
JPanel panelThree = new JPanel();
panelThree.setBounds(0, 400, 400, 200);
panelThree.setLayout(new BorderLayout());
panelOne.add(label);
panelTwo.add(button);
panelThree.add(aTextField);
this.add(panelOne);
this.add(panelTwo);
this.add(panelThree);
}
}
有很多东西是用来做笔记的,我更愿意在这个特定的项目中使用null布局(除非这是错误的来源),右边的空白是我稍后要添加的东西。
注意:没有文本字段,其他所有内容都显示良好。即使只是用 JTextField aTextField = new JTextField();
制造了 JFrame
灰色背景。也没有撞车。
非常感谢您的帮助!
1条答案
按热度按时间c0vxltue1#
我在听一个教程
如果教程使用的是空布局,那么去掉教程。没有理由使用空布局。swing设计用于布局管理器(这里列出的原因太多了)。
阅读关于布局管理器的swing教程以获得正确的演示代码。教程代码将向您展示如何正确创建摆动框架。从教程中的演示代码开始,然后进行更改。
但是,当添加jtextfield时,jframe会变成纯灰色背景。
文本字段与您的问题无关。
问题是,在使框架可见之前,需要将组件添加到框架中。这个
setVisible( true )
语句应该是构造函数中的最后一个语句。