我正在尝试使用Java类属性在执行之间保存应用程序的设置.之后我想将我的应用程序导出到可运行的JAR文件中,并保留这个文件中所需的所有内容以提供可移植性.所以我的应用程序必须找到属性文件,加载它然后在退出时将新设置保存到其中.
装载工作正常:
Properties prop = new Properties().load(this.getClass().getResourceAsStream("properties.cfg"));
Run Code Online (Sandbox Code Playgroud)
但是对于存储,我需要找到相同的文件并覆盖它.方法Properties.store()需要一个OutputStream,但getResourceAsStream返回一个InputStream,因此我找不到该文件并访问它.
它应始终位于*.class文件中.我发现许多解决方案在导出到JAR之前有效但没有一个在导出后可以工作.谢谢你的任何建议.
我正在用Java制作一个简单的动画,我试图让它尽可能顺利.
我只使用每个Shape对象的*.Double内部类,并在Graphics2D对象中设置抗锯齿.只要我只使用fill()方法,但是如果我也使用draw()方法在同一个Shape周围绘制线条,那么这些线条的动画都是不连续的 - 逐个像素.
画布上的每个矩形都有这种绘制方法.它每20ms移动一次,整个画布使用Timer和TimerListener重新绘制.
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class AnimationTest {
public static void main(String[] args) {
JFrame frm = new JFrame("Test");
frm.setBounds(200, 200, 400, 400);
frm.setResizable(false);
frm.setLocationRelativeTo(null);
AnimationCanvas a = new AnimationCanvas();
frm.add(a);
frm.setVisible(true);
a.startAnimation();
}
}
class AnimationCanvas extends JPanel {
SimpleSquare[] squares = new SimpleSquare[2];
AnimationCanvas() {
squares[0] = new SimpleSquare(50, 80, true);
squares[1] = new SimpleSquare(160, 80, false);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for (SimpleSquare c : …
Run Code Online (Sandbox Code Playgroud)