我有一个简单的gui,当我运行它是完美的,但偶尔它不显示正确。我在JPanel中有一个圆圈。当它正确运行时,它会像我打算的那样显示在JFrame的中间,但是当它不能正常工作时,该圆圈将出现在靠近屏幕底部的位置。我该如何解决这个问题,让它每次都显示正确?是我的代码不正确(我希望不是!:)),还是它在java中的一些错误。所以这里是我的代码:Java是不是显示gui的权利
更新:看来,窗口高度正在改变。
Run.java ------------------------------------------- -------------------------------------
import javax.swing.JFrame;
public class Run {
public static void main(String args[]) {
Window w = new Window();
w.setSize(800, 500);
w.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
w.setVisible(true);
}
}
Window.java --- -------------------------------------------------- -----------------------
import javax.swing.JFrame;
public class Window extends JFrame {
public Window() {
super("Wheel");
Gui g = new Gui();
add(g);
}
}
Gui.java ----------------- -------------------------------------------------- -------------
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
public class Gui extends JPanel {
private Color wheelColor = new Color(0, 0, 255);
public Gui() {
setOpaque(true);
setBackground(new Color(255, 0, 0));
}
public void paintComponent(Graphics g) {
g.setColor(wheelColor);
g.fillOval(40, 40, 420, 420);
}
}
另外我使用Ubuntu,我不知道这是否会影响它。提前致谢。
尝试使用LAYO ut管理器(特别是您的Window类),这将有助于您的组件以更可预测的方式显示。 – MarsAtomic 2014-10-09 01:17:12
你可以添加一些截图吗?尽管如此,它并不确定。通常这意味着线程问题,即有时它在开始绘制圆圈之前完成绘制画布,而其他时间则不完成。或者,如果圈子在错误的地方,你可能会做出不同的事情。后者可能更有可能,因为我确信Swing是单线程的。 – JaneGoodall 2014-10-09 01:18:03
我没有足够的代表发布图像,:(。 – user3131261 2014-10-09 01:24:39