2024-05-06 02:50:39 | 我爱编程网
public class NewJFrame extends javax.swing.JFrame implements ActionListener, ChangeListener {
public NewJFrame() {
initComponents();
Timer timer = new Timer(50, this);
timer.setRepeats(true);
timer.start();
}
/** 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")
//
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jProgressBar1 = new javax.swing.JProgressBar();
jLabel1 = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setAlwaysOnTop(true);
getContentPane().setLayout(new java.awt.CardLayout());
jPanel1.setPreferredSize(new java.awt.Dimension(600, 350));
jPanel1.setVerifyInputWhenFocusTarget(false);
jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
jPanel1.add(jProgressBar1, new org.netbeans.lib.awtextra.AbsoluteConstraints(310, 294, 270, 10));
// jLabel1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/splashTimer.jpg"))); // NOI18N
jLabel1.setMaximumSize(new java.awt.Dimension(600, 350));
jLabel1.setMinimumSize(new java.awt.Dimension(600, 350));
jLabel1.setPreferredSize(new java.awt.Dimension(600, 350));
jPanel1.add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, -1, -1));我爱编程网
getContentPane().add(jPanel1, "card2");
pack();
}//
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JPanel jPanel1;
private javax.swing.JProgressBar jProgressBar1;
// End of variables declaration
public void stateChanged(ChangeEvent e1) {
int value = jProgressBar1.getValue();
if (e1.getSource() == jProgressBar1) {
}
}
public void actionPerformed(ActionEvent e) {
int value = jProgressBar1.getValue();
if (value < 100) {
value++;
jProgressBar1.setValue(value);
} else {
jProgressBar1.setValue(0);
}
}
}
终于看到个用netbeans的人了。。
你的 action 事件可以放在一个新线程中运行,不要阻挡 Swing 画图。
Swing 对事件的响应都是放在一个叫事件派发的线程中去做的,如果你的事件响应监听器本身在被事件派发线程调用时你做的事件太花时间了(比如我们来个无限循环啥的)我们就应该把这个 actionPerformed 方法中的事情放在一个新开的线程中去做:
public void actionPerformed(final ActionEvent e) {
new Thread() {
public void run() { // 你的事情都放在这里处理 }
}.start() ; // 开启一个新线程来处理,它将不再阻挡 Swing 事件派发线程去绘图。
}
我爱编程网(https://www.52biancheng.com)小编还为大家带来我在做一个JAVA软件,希望在点击一个按钮后执行一段程序,在执行过程中出现一个进度条,应该怎么添加的相关内容。
package socket.fox.msgdeal;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class JProgressBar extends Frame implements Runnable {
int x, y; // 进度倏起始位置
int rectWidth, rectHeight, width, height, num; // 进度格倏宽,进度格高,进度倏宽,进度倏高,格子数量
int x0, d, n; // 进度,进度格之间的距离,进度n%
Image bufImg;
Graphics gBuf;
public JProgressBar() {
x = 40;
y = 50;
x0 = x;
rectWidth = 6; // 每个进度格的宽
rectHeight = 10;
d = rectWidth / 3;
num = 50; // 显示五十个进度格
width = (rectWidth + d) * num;
height = rectHeight + 4; // 进度格的高
init();
bufImg = this.createImage(getWidth(), getHeight());
gBuf = bufImg.getGraphics();
paintBack();
repaint();
}
public void init() {
this.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
this.setSize(this.x * 2 + width, this.y * 2 + height);
this.setVisible(true);
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
int w = getSize().width;
int h = getSize().height;
int x = (dim.width - w) / 2;
int y = (dim.height - h) / 2;
setLocation(x, y);
}
public static void main(String[] args) {
new Thread(new JProgressBar()).start();
}
public void paintBack() {
gBuf.drawRoundRect(x, y, width, height, 6, 6);
}
public void paintProgressRect() {
Color c = gBuf.getColor();
gBuf.setColor(new Color(46, 211, 49));
x0 = x;
for (int i = 0; i < n; i++) {
gBuf.fillRect(x0, y + 2, rectWidth, rectHeight);
x0 += rectWidth + d;
}
gBuf.setColor(c);
}
public void paint(Graphics g) {
g.drawImage(bufImg, 0, 0, this);
}
/**
* 设置进度倏进度
*
* @param n
* 进度百分比
*/
public void setPercent(int n) {
this.n = n;
}
public void run() {
boolean flag = true;
while (flag) {
try {
repaint();
Thread.sleep(500);
n++;
System.out.println(n);
if (n > num) {
n = num;
flag = false;
}
paintProgressRect();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
2025-02-01 20:24:39
2025-02-10 15:19:48
2025-01-28 17:58:32
2024-01-05 14:11:24
2024-11-22 05:08:01
2024-09-10 08:50:00