繁体   English   中英

在新的JFrame中添加JTextField

[英]Add JTextField in A new JFrame

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

注意:我是一个初学者,对于这个简单的问题,请您提前表示抱歉:)

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);

}





}

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

我还建议不要使用多个JFrames因为它们会在任务栏上打开多个窗口,这对用户不友好。 请参阅: 多个JFrame的使用,良好/不良实践

另外,请遵循Java命名约定 例如,您将一个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可见的代码将提供以下输出:

在此处输入图片说明

但是,请遵循我的上述建议。

像这样将JTextField添加到新的JFrame中。 您还必须初始化您的文本字段。 基本上与初始JFrame相同。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM