【问题标题】:Connection of JButton and JTextField?JButton 和 JTextField 的连接?
【发布时间】:2014-09-10 10:13:26
【问题描述】:

我只想知道如何通过键入特定字符来创建新框架,然后如果您单击 J 按钮,则(该字符的)所有信息都会弹出 - 例如图片或文本。

例如,如果我输入“狗”这个词,一张狗的图片及其相关信息将在新窗口中弹出。没有数据库这可能吗?

如果可能的话,我想在没有数据库的情况下这样做。

这是我的代码:

 import java.awt.FlowLayout;
 import java.awt.BorderLayout;
 import java.awt.Font;

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

 import javax.swing.JOptionPane;
 import javax.swing.ImageIcon;
 import javax.swing.JFrame;
 import javax.swing.JLabel;
 import javax.swing.JPanel;
 import javax.swing.SwingUtilities;
 import javax.swing.JTextField;
 import javax.swing.JButton;
 import javax.swing.BorderFactory;
 import javax.swing.JOptionPane;

 //Bago
 import java.awt.GridBagLayout; // Para mahatihati yung panel
 import java.awt.GridBagConstraints; // para customize yung pagkahati ng panel

class ProgDraftMain {

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            ProgDraft gui = new ProgDraft();
            gui.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            gui.setResizable(true);
            gui.pack();

            gui.setVisible(true);
        }
    });
}
}

class ProgDraft extends JFrame {

private ImageIcon image1;
private JLabel label1;
private JTextField textField1;
private JButton butones;
private JTextField textField;

ProgDraft() {


    JPanel mainPanel = new JPanel(new BorderLayout());


    JLabel title = new JLabel("Dog Check", JLabel.CENTER);
    Font font = new Font("Gigi", Font.BOLD, 50);
    title.setFont(font);
    mainPanel.add(title, BorderLayout.NORTH);   


    String text = "Dogs" + "<br>"
            + "Cute dogs are everywhere" + "<br>" + "<br>"
            + "Take care and stay safe!" + "<br>"
            + "I love my dogs" + "<br>" + "<br>" + "<br>"
            + "Please help!";
    JLabel dog = new JLabel("<html><div style=\"text-align: center;\">" + text + "</html>");
    dog.setHorizontalAlignment(JLabel.CENTER);
    mainPanel.add(dog);   

    ImageIcon pics = new ImageIcon(getClass().getResource("Capture.png"));

    JLabel logo = new JLabel(pics);
    logo.setHorizontalAlignment(JLabel.CENTER);
    logo.setBorder(BorderFactory.createEmptyBorder(10, 0, 10, 0));
    logo.setToolTipText("PIcture.");




    JPanel iconFieldPanel = new JPanel(); 
    iconFieldPanel.setLayout( new GridBagLayout() );


    GridBagConstraints gc = new GridBagConstraints();



    gc.anchor = GridBagConstraints.CENTER; // Saan ikakabit yung component
    gc.weightx = 0.5; // (left and right)Space between sa edge nung panel at component
    gc.weighty = 0.5; // (top and bottom)^ 
    gc.gridx = 0; //saang cell x-axis
    gc.gridy = 0; //^ y axis naman


    iconFieldPanel.add(logo, gc);



    gc.gridy = 1;
    JLabel titleBut = new JLabel("Enter Dog Code:");
    iconFieldPanel.add(titleBut, gc);    


    gc.gridy = 2; 
    textField = new JTextField(10);
    iconFieldPanel.add(textField, gc );


    JButton buton1 = new JButton("OK");           

    gc.gridy = 3;

    iconFieldPanel.add( buton1, gc);





    JPanel iconFieldWrapper = new JPanel();
    iconFieldWrapper.add(iconFieldPanel);



    mainPanel.add(iconFieldWrapper, BorderLayout.SOUTH);  // add icon and field to bottom


    getContentPane().add(mainPanel);



}



}

【问题讨论】:

  • 可能是List 的Dog 对象,每个Dog 对象都包含狗代码和JFrame。
  • 我猜你可以上一堂课,例如InfoFrame,在按钮单击时调用它的构造函数,使用字符串参数(例如:new InfoFrame("Dog"))并决定在其上加载什么图像/描述,或者只是将图像/描述作为参数传递。但我确信这不是最好的方法。

标签: java swing jframe jbutton jtextfield


【解决方案1】:

以下代码可以帮助您解决问题,

import java.awt.Button;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class PopupExample implements ActionListener
{
    JFrame frame;
    JTextField t1;
    JButton btn;
    public PopupExample()
    {
       frame=new JFrame();
       frame.setLayout(null);
       frame.setSize(700,700);
       frame. setLocation(300,10);

       t1=new JTextField();
       t1.setBounds(82,10,100,20);

       frame.add(t1);

       btn=new JButton("SUBMIT");
       btn.setBounds(200,10,100,20);
        btn.addActionListener(this);
       frame.add(btn);
       frame.setVisible(true);
     }

     public static void main(String ar[])
     {
        PopupExample obj=new PopupExample();
     }

    @Override
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==btn)
        {
            String input=t1.getText();
            if(input.equals("dog"))
            {
                JOptionPane.showMessageDialog(null,"my dog");
                //you can popup new frame here about dog
                //create the object of new class (which contain dog details)here.
                //you can use show()
            }
        }
    }
}

【讨论】:

  • 你好!这是我一直渴望、寻找和寻找的输出/代码。我很高兴!非常感谢! :-) 非常!谢谢!我会试着在上面放一张图片。玩代码。
  • 请不要推荐空布局。
【解决方案2】:

可以编写没有数据库的程序,但您必须考虑一种存储数据的方法。对于数据库的问题,我猜你的意思是如何存储这些狗的代码和图片。

【讨论】:

    【解决方案3】:

    是的,我们可以在没有数据库的情况下做到这一点,但是您需要编写不同的逻辑,即根据条件进行硬编码

    示例:从文本字段中获取数据后

    String a=xx.getText().toString().trim();if(a.equals("dog"))
    {
        //call the iframe which u need
    }
    

    注意:因为您需要将所有图像存储在工作目录中,或者存储具有不同名称的所有帧,其中包括图像和有关图像的信息,并根据您的要求调用它们。

    【讨论】:

      猜你喜欢
      • 2021-12-16
      • 2015-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多