gpt4 book ai didi

java - JFrame 打开为空

转载 作者:行者123 更新时间:2023-11-29 10:14:24 25 4
gpt4 key购买 nike

我正在尝试创建一个程序,但它没有在 JFrame 中显示任何内容,这很奇怪。该代码似乎很合适,但 java 似乎很困惑或什么的。到目前为止,这是我的代码:

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;


public class Img extends JFrame{

/**
*
*/
private static final long serialVersionUID = -6362332275268668673L;
static JFrame panel = new JFrame();
private JButton next= new JButton("Next");

public Img(String a, String b){
ShowPng1(a,b);
}

public void ShowPng1(String a, String b) {
ImageIcon theImage = new ImageIcon("Icon_Entry_21.png");
panel.setSize(300, 300);
panel.setResizable(false);

JLabel label = new JLabel(a);
JLabel label2 = null;
if(!b.isEmpty()){
label2 = new JLabel("NOTE: " + b);
}

JLabel imageLabel = new JLabel(theImage);
imageLabel.setOpaque(true);

JPanel p1 = new JPanel(new GridLayout(3, 1));
p1.add(imageLabel);
p1.add(label);
if(label2 != null)p1.add(label2);

panel.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel.setVisible(true);
}

public void ShowPng2(String a, String b) {
ImageIcon theImage = new ImageIcon("Icon_Entry_21.png");
panel.setSize(300, 300);
panel.setResizable(false);

JLabel label = new JLabel(a);
JLabel label2 = null;
if(!b.isEmpty()){
label2 = new JLabel("NOTE: " + b);
}

JLabel imageLabel = new JLabel(theImage);
imageLabel.setOpaque(true);

JPanel p1 = new JPanel(new GridLayout(3, 1));
p1.add(imageLabel);
p1.add(label);
if(label2 != null)p1.add(label2);
p1.add(next);

panel.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
panel.setVisible(true);

try {
Runtime.getRuntime().exec("cmd /c start mailrugames://play/0.3001");
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "Error launching client.","Error", JOptionPane.ERROR_MESSAGE);
System.exit(-1);
}

}

public void actionPerformed(ActionEvent e) {
try {
ShowPng1("Applying patch NOW.","");
Process p1 = Runtime.getRuntime().exec("cmd /c start Start.bat");
p1.waitFor();
JOptionPane.showMessageDialog(null, "Done!","Note", JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
} catch (IOException e1) {
e1.printStackTrace();
System.exit(-1);
} catch (InterruptedException e1) {
e1.printStackTrace();
System.exit(-1);
}
}

public static void main(String[] args) throws IOException, InterruptedException {

Img i = new Img("Preparing client for a patch","");
Process p1 = Runtime.getRuntime().exec("cmd /c start Clean.bat");
p1.waitFor();
Img.panel.dispose();

i.ShowPng2("Launching client.","Make sure the client is fully patched before closing it and clicking `Next`");
}
}

它应该将图像 imageLabel 加载到容器中,并在底部显示一些文本 labellabel2ShowPng1()ShowPng2() 的区别在于下一步按钮,它位于 ShowPng2() 中。

最佳答案

  1. 您不向 JFrame 添加任何内容。
  2. 永远不要将 JFrame 设置为可见。
  3. 您将 Swing 事件线程与长时间运行的进程捆绑在一起。

  • 您需要将组件添加到 JFrame 本身。
  • 您需要在添加组件后将其设置为可见。
  • 您需要在后台线程中运行长时间运行的进程。

  • 您需要完成 Swing 教程。查看标签,点击信息链接,查看其中包含的资源。

关于java - JFrame 打开为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22052095/

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