gpt4 book ai didi

java - 未显示 JFrame 的内容

转载 作者:行者123 更新时间:2023-11-29 05:47:16 28 4
gpt4 key购买 nike

我正在使用框架来显示消息,但框架的内容没有显示。下面是我的 MessageBox 框架的代码。

public class MessageBox extends javax.swing.JFrame {

/**
* Creates new form MessageBox
*/
public static String title=null,message=null;

public MessageBox(String message,String title) {

initComponents();



}

/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {

txtMessage = new javax.swing.JTextField();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});

txtMessage.setBackground(new java.awt.Color(236, 233, 216));
txtMessage.setOpaque(false);
txtMessage.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
txtMessageActionPerformed(evt);
}
});

javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(18, 18, 18)
.addComponent(txtMessage, javax.swing.GroupLayout.PREFERRED_SIZE, 380, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(31, 31, 31)
.addComponent(txtMessage, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(24, Short.MAX_VALUE))
);

pack();
}// </editor-fold>

private void txtMessageActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
}

private void formWindowOpened(java.awt.event.WindowEvent evt) {
// TODO add your handling code here:
this.setTitle(title);
txtMessage.setText(message);
txtMessage.revalidate();
txtMessage.repaint();
this.repaint();
}

/**
* @param args the command line arguments
*/

// Variables declaration - do not modify
private javax.swing.JTextField txtMessage;
// End of variables declaration

public static void main(String args[]) {
/*
* Set the Nimbus look and feel
*/
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/*
* If Nimbus (introduced in Java SE 6) is not available, stay with the
* default look and feel. For details see
* http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/

//</editor-fold>

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {
// new ERPMainMenu().setVisible(true);
new MessageBox(title,message).setVisible(true);
}
});
}

       public Class CallingClass
{
public CallingClass(){
}
public caller(){
MessageBox mb =new MessageBox("The Data is saved successfully", "Success");

mb.setLocation(400, 300);
mb.setVisible(true);
try {
Thread.sleep(5000);
} catch(InterruptedException ex) {
Thread.currentThread().interrupt();
}
mb.setVisible(false);

}
}

最佳答案

使用javax.swing.Timer而不是 Thread.sleep()。您的所有代码如下所示:

MessageBox.java

import javax.swing.*;
import java.awt.event.*;
public class MessageBox extends javax.swing.JFrame
{
/**
* Creates new form MessageBox
*/
public static String title=null,message=null;
public MessageBox(String message,String title)
{
this.message = message;
this.title = title;
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents()
{

txtMessage = new javax.swing.JTextField();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
addWindowListener(new java.awt.event.WindowAdapter()
{
public void windowOpened(java.awt.event.WindowEvent evt)
{
formWindowOpened(evt);
}
});
txtMessage.setBackground(new java.awt.Color(236, 233, 216));
txtMessage.setOpaque(false);
txtMessage.addActionListener(new java.awt.event.ActionListener()
{
public void actionPerformed(java.awt.event.ActionEvent evt)
{
txtMessageActionPerformed(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(18, 18, 18)
.addComponent(txtMessage, javax.swing.GroupLayout.PREFERRED_SIZE, 380, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(31, 31, 31)
.addComponent(txtMessage, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(24, Short.MAX_VALUE))
);
pack();
}// </editor-fold>
private void txtMessageActionPerformed(java.awt.event.ActionEvent evt)
{
// TODO add your handling code here:
}
private void formWindowOpened(java.awt.event.WindowEvent evt)
{
// TODO add your handling code here:
this.setTitle(title);
txtMessage.setText(message);
txtMessage.revalidate();
txtMessage.repaint();
this.repaint();
}
/**
* @param args the command line arguments
*/
// Variables declaration - do not modify
private javax.swing.JTextField txtMessage;
// End of variables declaration
public static void main(String args[])
{
/*
* Set the Nimbus look and feel
*/
//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
/*
* If Nimbus (introduced in Java SE 6) is not available, stay with the
* default look and feel. For details see
* http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
*/

//</editor-fold>
java.awt.EventQueue.invokeLater(new Runnable()
{
public void run()
{
CallingClass cl = new CallingClass();
cl.caller();
}
});
}
}



调用类.java

class CallingClass
{
public CallingClass(){}
public void caller()
{
final MessageBox mb =new MessageBox("The Data is saved successfully", "Success");
mb.setLocation(400, 300);
javax.swing.Timer timer = new javax.swing.Timer(5000,new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
mb.setVisible(false);
}
});
timer.start();
mb.setVisible(true);
}
}

Note: As suggested by Camickr, I have started the Timer before the JFrame is shown. This increases accuracy for the duration(5seconds in your case) till which the JFrame will be visible.

关于java - 未显示 JFrame 的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15404558/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com