У меня есть простой gui, и когда я запускаю, это прекрасно, но иногда он не отображается правильно. У меня есть круг в JPanel. Когда он работает правильно, он отображается посередине для JFrame, как я и предполагал, но когда он не работает правильно, круг становится ближе к нижней части экрана. Как я могу исправить это, чтобы он отображался правильно каждый раз? Является ли мой код неправильным (надеюсь, нет! :)), или это некоторая ошибка в java. Итак, вот мой код:Java не отображается gui right
Обновление: Кажется, что высота окна меняется.
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
Можете ли вы добавить несколько скриншотов? Тем не менее это странно, что он не ведет себя детерминистически. Обычно это означает проблему с потоками, т. Е. Иногда она заканчивает рисование холста, прежде чем он начнет рисовать круг, а иногда это не так. Или вы можете делать что-то другое, когда круг находится в неправильном месте. Последнее может быть более вероятным, так как я уверен, что Swing является однопоточным. – JaneGoodall
У меня нет достаточного количества изображений для отправки изображений, :(. – user3131261