JTextField没有出现

时间:2016-02-09 22:47:27

标签: java swing

我正在尝试向我的JFrame添加状态栏。我试图添加它,但它不会出现在我的JFrame上。这被称为因为JFrame与exitButton一起出现,但状态栏不在站点的位置!请帮忙!

JFrame代码:

package AnimalThing;

import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class window {
    public static JFrame frame;
    public static void create(){
        frame = new JFrame("Probe Controller: Exodus I");
        frame.setLayout(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(1600, 900);
        frame.setResizable(false);
        frame.setVisible(true);
        frame.setForeground(Color.CYAN);
        frame.getContentPane().setBackground(Color.DARK_GRAY);
        winComp.Add(frame); 
    }
}

winComp代码:

package AnimalThing;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.time.LocalDateTime;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextField;

public class winComp {
    public static JTextField statusBar;
    public static JButton exitButton, clickedButton;
    public static void Add(JFrame frame){
            AddExitButton(frame);
            AddstatusBar(frame);
    }

    private static void AddstatusBar(JFrame frame) {
            statusBar = new JTextField(1);
            statusBar.setBounds(500, 500, 100, 100);
            statusBar.setText("Hello");
            frame.add(statusBar);
    }

    public static void AddExitButton(JFrame frame){
        exitButton = new JButton("Exit");
        exitButton.setBounds(1, 1, 100, 33);
        exitButton.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent arg0) {
                System.out.println("Exit Button Hit: " + LocalDateTime.now());
                System.exit(0);
            }});
        Font buttonFont = new Font("Thing", Font.BOLD, 16);
        exitButton.setFont(buttonFont);
        exitButton.setFocusPainted( false );
        exitButton.setBackground(Color.BLACK);
        exitButton.setForeground(Color.RED);
        exitButton.setBorderPainted(false);
        frame.add(exitButton);


    }

}

1 个答案:

答案 0 :(得分:2)

基本上,在添加任何组件之前,您已调用setVisible。将frame.setResizable(false);更改为frame.setResizable(true);并尝试调整框架大小,字段应显示。您可以在添加字段后拨打setVisible或致电repaint,“可能”正常工作

我鼓励您避免使用null布局,像素完美布局是现代ui设计中的错觉。影响组件个体大小的因素太多,您无法控制。 Swing旨在与布局管理器一起工作,放弃这些将导致问题和问题的终结,您将花费越来越多的时间来纠正

一般来说,winComp.Add(frame);没有意义,因为您似乎正在尝试将框架添加到winComp并且有些令人困惑。该方法的名称可以更改为其他内容,以便更容易理解方法意图。

我还建议您查看Code Conventions for the Java Programming Language因为您的代码难以阅读