在新的JFrame中添加JTextField

时间:2015-09-21 15:21:34

标签: java swing jframe jpanel jtextfield

我有JFrame JButton,此按钮打开一个新的JFrame,其中应该有一个文本框(JTextField),我将用于搜索问题是我不知道如何插入它。我想出了这个:

N.B我是初学者,对于这个简单的问题提前抱歉:)

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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


public class MainWindow {




// Seconda Finestra
public static void NuovaFinestra (JPanel panel) {

    panel.setLayout(null);



    JButton Ricerca = new JButton("Ricerca");
    Ricerca.setBounds(100, 100, 200, 50);
    panel.add(Ricerca);


    Ricerca.addActionListener(new ActionListener(){
         public void actionPerformed(ActionEvent e) {
             JFrame FinestradiRicerca = new JFrame("Finestra di Ricerca");
             FinestradiRicerca.setBounds(300, 300, 500, 500);

             FinestradiRicerca.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
             JPanel riquadroRicerca = new JPanel();
             FinestradiRicerca.add(riquadroRicerca);
             FinestradiRicerca.setVisible(true);
             JTextField ciao;
                ciao = new JTextField ();
                 }
    });

}




//Main  
public static void main(String[] args) {

    //Finestra Principale
    JFrame finestra = new JFrame("Finestra principale");
    finestra.setSize(500, 500);
    finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


//JPanel della finestra principale
    JPanel riquadro = new JPanel();
    finestra.add(riquadro);
    finestra.setVisible(true);

    NuovaFinestra(riquadro);

}





}

2 个答案:

答案 0 :(得分:4)

您需要将新元素添加到riquadroRicerca在将面板添加到FinestradiRicerca之前,我建议您不要使用null布局,而应使用Layout Manager或它们的组合。如果您坚持保留null布局,请参阅下面的示例。但对于这种应用,我建议使用CardLayout

我还建议不要使用多个JFrames,因为它们会在用户不友好的任务栏上打开多个窗口。请参阅:Use of multiple JFrames, Good / Bad Practice

另外,请关注Java naming conventions。例如,您将JFrame称为FinestradiRicerca,而是将其重命名为:finestradiRicerca变量的第一个字母小写)。

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class MainWindow {
    // Seconda Finestra
    public static void NuovaFinestra (JPanel panel) {
        panel.setLayout(null);
        JButton Ricerca = new JButton("Ricerca");
        Ricerca.setBounds(100, 100, 200, 50);
        panel.add(Ricerca);
        Ricerca.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                JFrame FinestradiRicerca = new JFrame("Finestra di Ricerca");
                FinestradiRicerca.setBounds(300, 300, 500, 500);
                //If you don't want to close whole app when closing this windo change it to: JFrame.DISPOSE_ON_CLOSE
                FinestradiRicerca.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                JPanel riquadroRicerca = new JPanel();
                JTextField ciao;
                JLabel myLabel = new JLabel("Here goes your label text");
                ciao = new JTextField ();
                ciao.setColumns(20);
                riquadroRicerca.add(myLabel);
                riquadroRicerca.add(ciao);
                FinestradiRicerca.add(riquadroRicerca);
                FinestradiRicerca.setVisible(true);
            }
        });
    }

    //Main  
    public static void main(String[] args) {
        //Finestra Principale
        JFrame finestra = new JFrame("Finestra principale");
        finestra.setSize(500, 500);
        finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        //JPanel della finestra principale
        JPanel riquadro = new JPanel();
        finestra.add(riquadro);
        finestra.setVisible(true);
        NuovaFinestra(riquadro);
    }
}

因此,经过一些修改后,为了使JLabelJTextField可见,您的代码会提供以下输出:

enter image description here

但请遵循我的上述建议。

答案 1 :(得分:0)

JTextField添加到您的新JFrame中。您还必须初始化文本字段。它与您对初始JFrame的操作基本相同。

JTextField ciao = new JTextField();
FinestradiRicerca.add(ciao);