【发布时间】:2015-05-03 06:15:57
【问题描述】:
我在想做的事情上遇到了一些麻烦。 基本上,我有一个 JPanel,当我单击 JButton 时,它会由 Thread 重新调整大小。这很好用,但是当我重新调整 JFrame 的大小或最小化和最大化 JFrame 时,JPanel 会恢复其默认大小。
这是我的线程的类代码
public class Slider extends Thread {
private JPanel panel;
private boolean running = true;
private int maxWidth = 0;
public Slider(JPanel panel, int maxWidth) {
this.panel = (JPanel)panel;
this.maxWidth = maxWidth;
}
public JPanel getPanel() {
return panel;
}
public void setPanel(JPanel panel) {
this.panel = panel;
}
public boolean isRunning() {
return running;
}
public void setRunning(boolean running) {
this.running = running;
}
public void extendJPanelHorizontally(){
this.panel.setSize(this.panel.getWidth()+1, this.panel.getHeight());
}
@Override
public void run() {
while (running){
if (this.panel.getWidth() >= this.maxWidth){
running = false;
System.out.println("Finishing...");
}else{
System.out.println("Re-sizing...");
this.extendJPanelHorizontally();
}
try {
Thread.sleep(3);
System.out.println("Waiting...");
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
}
我的按钮就是这样做的:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
Slider slider = new Slider((JPanel)this.jPanel1, 200);
slider.start();
}
谢谢。
【问题讨论】:
-
1) 为了尽快获得更好的帮助,请发布MCVE(最小完整可验证示例)或SSCCE(简短、自包含、正确示例)。 2) 将面板的大小留给布局管理器! 3) 请参阅Detection/fix for the hanging close bracket of a code block 了解我无法再费心解决的问题。
-
看看Universal Tween Engine之类的东西
标签: java multithreading swing jframe jpanel