gpt4 book ai didi

java - 更改 JFrame 的内容很慢,还是我做错了?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:35:59 24 4
gpt4 key购买 nike

我做了这个小测试:(删除了所有与问题无关的内容)

package de.poller.StorrageBox;

import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MainClass implements KeyListener {

JFrame frame;
JPanel panel1;
JPanel panel2;

public static void main(String[] args) {
MainClass c=new MainClass();
}

public MainClass() {
frame=new JFrame("test");
frame.setSize(new Dimension(500, 500));
frame.addKeyListener(this);

panel1=new JPanel();
JButton butt1=new JButton("test1111");
panel1.add(butt1);

panel2=new JPanel();
JButton butt2=new JButton("test222");
panel2.add(butt2);

frame.add(panel1);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.requestFocus();

}


@Override
public void keyPressed(KeyEvent arg0) {

if(arg0.getKeyChar()=='a') {
activate1();
val();
}
if(arg0.getKeyChar()=='b') {
activate2();
val();
}
}

private void activate2() {
frame.remove(panel1);
frame.add(panel2);
}

private void activate1() {
frame.remove(panel2);
frame.add(panel1);
}

private void val() {
frame.revalidate();
frame.requestFocus();
}


public void keyReleased(KeyEvent arg0) {}


public void keyTyped(KeyEvent arg0) {}

}

从面板 1 到面板 2 的第一次更改是可以的,但如果我切换回面板 1,则需要相当长的时间(比我希望用户等待的时间长),而且这只是一个只有一个按钮的面板。没有计划中的完整图形用户界面。

这里的问题是:是重新验证(我认为是这个过程)太慢还是我做错了什么?

最佳答案

感谢 ControllAltDel 的解决方案:

(卡片布局)

package de.poller.StorrageBox;

import java.awt.CardLayout;
import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class MainClass implements KeyListener {

JFrame frame;
JPanel panel;

JPanel panel1;
JPanel panel2;

public static void main(String[] args) {
MainClass c=new MainClass();
}

public MainClass() {
frame=new JFrame("test");
frame.setSize(new Dimension(500, 500));
frame.addKeyListener(this);

panel=new JPanel(new CardLayout());
frame.add(panel);

panel1=new JPanel();
JButton butt1=new JButton("test1111");
panel1.add(butt1);

panel2=new JPanel();
JButton butt2=new JButton("test222");
panel2.add(butt2);

panel.add(panel1,"1");
panel.add(panel2,"2");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.requestFocus();

}


public void keyPressed(KeyEvent arg0) {

if(arg0.getKeyChar()=='a') {
activate1();
}
if(arg0.getKeyChar()=='b') {
activate2();
}
}

private void activate2() {
CardLayout cl=(CardLayout)(panel.getLayout());
cl.show(panel, "2");
}

private void activate1() {
CardLayout cl=(CardLayout)(panel.getLayout());
cl.show(panel, "1");
}

public void keyReleased(KeyEvent arg0) {}

public void keyTyped(KeyEvent arg0) {}

}

关于java - 更改 JFrame 的内容很慢,还是我做错了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42515439/

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