为什么我的Jtextfield和jmenubar不起作用

时间:2014-09-20 22:03:09

标签: java swing jframe

Q1:我的JTextFeild和JMenuBar没有出现,我不知道为什么 有一个程序的图片。

Q2:我已经看到很多编写接口程序的方法,我不知道哪种方式更好。是这样还是这样:https://www.youtube.com/watch?v=706Ye4ubtEY

import javax.swing.*;
import java.awt.*;
import javax.swing.JTextField; 
import javax.swing.JMenuBar;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public  class Real_Interface extends JFrame implements ActionListener {

    public Real_Interface(){
        JFrame window = new JFrame();
        window.add(new JLabel("Rocket Data Visualization Tool"));
        window.setTitle("Rocket Data Visualization Tool");
        window.setSize(640, 480);
        window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        window.setLocationRelativeTo(null);
        window.setVisible(true);
        window.setResizable(false);

        JTextField tf = new JTextField(); 
        tf.setText("New Text");
        String str = tf.getText();
        tf.setVisible(true);

        JMenuBar bar = new JMenuBar();
        JMenu file = new JMenu("File");
        JMenuItem menuItem = new JMenuItem("haha");
        JMenuItem menuItem2 = new JMenuItem("haha2");
        file.add(menuItem);
        file.addSeparator();
        file.add(menuItem2);
        bar.add(file);


        JButton button = new JButton("OK");  
        window.add(button);  
        button.setBounds(250, 400, 150, 40);  
        button.addActionListener(this);
    }
    public static void main(String[] args){
        new Real_Interface();
    }

    public void actionPerformed(ActionEvent e) {
        System.out.println("The Button Works!");
        Plot.main(null);
    }

}

2 个答案:

答案 0 :(得分:3)

有几个原因

尚未将菜单栏分配到框架

window.setJMenuBar(bar);

尚未添加文字字段

window.add(textfield, BorderLayout.PAGE_START);

默认情况下此组件可见,因此无需调用setVisible

在将所有组件添加到框架而不是预先添加到框架之后,需要使框架可见

window.setVisible(true);

答案 1 :(得分:2)

您的JTextField tfJMenuBar bar未添加到其父级(window?)。