【发布时间】: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