gpt4 book ai didi

java - 打开另一个 JFrame 时 JFrame 卡住

转载 作者:太空宇宙 更新时间:2023-11-04 11:31:01 25 4
gpt4 key购买 nike

EDIT2:测试过。这肯定是新 JPanel 的问题。

解决方案:正如所提出的,答案是我忘记将我的 JPanel 明确设置到我的 JFrame 上。变化:

setContentPane(contentPanetagesliste);

frame.setContentPane(contentPanetagesliste);

它对我有用!

<小时/>

我的问题是 JFrame 的奇怪行为。

在我的代码中,我的 MainFrame 上有一个单选按钮。当按下它时,它会打开另一个框架。

RadioBTNtagesliste.addActionListener (new ActionListener () {
public void actionPerformed(ActionEvent e) {
frame.setSize(590, 450); ...

在我的新框架中,我制作了一个 JPanel。在添加 JPanel 之前,另一个框架没有卡住,所以我相信问题与新的 JPanel 有关。

JPanel contentPanetagesliste;

contentPanetagesliste = new JPanel();

contentPanetagesliste.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPanetagesliste);

最后,我将 JScrollPane 添加到 JPanel(这就是我必须制作一个的原因)并使 JFrame 可见。

JScrollPane jsp = new JScrollPane(contentPanetagesliste);
frame.add(jsp);


frame.setVisible(true);

我完全不知道新的 JPanel 如何干扰 Main JFrame 或位于 MainJFrame 之上的 JPanel。我希望你们中的一些人可以帮助我。

编辑:因为有些人不清楚:卡住我的意思是没有响应,当我移动它时,它会变成空白灰色。

到图像:当我按下最右上角的单选按钮时,新窗口将打开,功能齐全,但旧窗口被卡住。

image

<小时/>

有关更多信息,我将发布来自 Action 监听器的完整代码并附有解释。

RadioBTNtagesliste.addActionListener (new ActionListener () {
public void actionPerformed(ActionEvent e) {
try {
if(RadioBTNtagesliste.isSelected() == true){
String Eintrag = HttpClass.httpRequestEintrag(usernamevar,EintragStringPK,"eintragTABLE");
JSONObject jsonObjectEintrag = new JSONObject(Eintrag);
int ProjektJSONlength = jsonObjectEintrag.length() - 1;

frame.setSize(590, 450);
JPanel contentPanetagesliste;

contentPanetagesliste = new JPanel();

contentPanetagesliste.setBorder(new EmptyBorder(5, 5, 5, 5));
setContentPane(contentPanetagesliste);

double[] temp = new double[ProjektJSONlength+2];
temp[0] = 10;
temp[1] = 30;
for(int i = 0; i < ProjektJSONlength; i++){
temp[i+2] = 25;
}

double size[][] = {{2, 90, 90, 90, 90, 90,90, 2}, // Columns
temp}; // Rows
contentPanetagesliste.setLayout(new TableLayout(size));
String label[] = {"Eintrag Nr.", "Projekt", "Aktivität", "Dauer", "Beschreibung", "Symbol"};

JButton button[] = new JButton[label.length];
JTextField textfield[] = new JTextField[label.length];

for (int i = 0; i < label.length; i++) {
button[i] = new JButton(label[i]);
}

contentPanetagesliste.add(button[0], "1, 1");
contentPanetagesliste.add(button[1], "2, 1");
contentPanetagesliste.add(button[2], "3, 1");
contentPanetagesliste.add(button[3], "4, 1");
contentPanetagesliste.add(button[4], "5, 1");
contentPanetagesliste.add(button[5], "6, 1");

EintragStringPK = "Neu";

for (int key=0; key<=ProjektJSONlength;key++) {
JSONObject jsonObjectProjekteObjekt0 = jsonObjectEintrag.getJSONObject(String.valueOf(key));
String Eintraege = jsonObjectProjekteObjekt0.toString();
String EintragStringDauer = jsonObjectProjekteObjekt0.getString("dauer"); // String auslesen!!!
String EintragStringBEschreibung = jsonObjectProjekteObjekt0.getString("beschreibung"); // String auslesen!!!
String EintragStringProjektname = jsonObjectProjekteObjekt0.getString("projektname"); // String auslesen!!!
String EintragStringAktivitaet = jsonObjectProjekteObjekt0.getString("kategorie"); // String auslesen!!!
EintragStringPK = jsonObjectProjekteObjekt0.getString("pk_ei_id"); // String auslesen!!!

System.out.println("test" + key);
System.out.println(ProjektJSONlength);
String labelCONTENT[] = {EintragStringPK, EintragStringProjektname, EintragStringAktivitaet, EintragStringDauer, EintragStringBEschreibung, "Symbol"};

for (int i = 0; i < labelCONTENT.length; i++) {
textfield[i] = new JTextField(labelCONTENT[i]);
}
int keypone = key+2;
String keyString = Integer.toString(keypone);
contentPanetagesliste.add(textfield[0], "1, "+keyString);
contentPanetagesliste.add(textfield[1], "2, "+keyString);
contentPanetagesliste.add(textfield[2], "3, "+keyString);
contentPanetagesliste.add(textfield[3], "4, "+keyString);
contentPanetagesliste.add(textfield[4], "5, "+keyString);
contentPanetagesliste.add(textfield[5], "6, "+keyString);
}

JScrollPane jsp = new JScrollPane(contentPanetagesliste);
frame.add(jsp);
frame.setVisible(true);
System.out.println("ende");
}else{
frame.setVisible(false);
System.out.println("ende2");
}
System.out.println("ende3");

} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("ende4");

}
});

说明:

我创建了 JFrame,然后创建了 JPanel。

创建一个数组以及我的表所需的其余部分,因为目标是使用 SQL DB 中的数据创建一个生成表。

还有一个 HTTP 请求和一个循环来获取数据并将其放入表字段中。仍然在循环中,填充的表格字段被添加到内容 Pane 中,并且 Jpanel 获得了他的 JScrollPane 并且框架被设置为可见。

我真的希望有人能帮助我,如果您有提出更好问题的建议,我会洗耳恭听。

最佳答案

setContentPane(contentPanetagesliste); 应显式设置为您创建的新框架,如下所示:frame.setContentPane(contentPanetagesliste);

关于java - 打开另一个 JFrame 时 JFrame 卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43800901/

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