sách gpt4 ai đã đi

java - 图形未绘制/出现

In lại 作者:行者123 更新时间:2023-11-29 10:17:57 27 4
mua khóa gpt4 Nike

我遇到了这个问题,我绘制的对象没有出现在 GUI 中。我知道它正在被处理,因为数据被推送到日志文件。但是,图形没有出现。

这是我的一些代码:

public static void main(String[] args)
{
JFrame window = new JFrame();
window.setLayout(new BorderLayout());
window.setVisible(true);
}

我在各处放置了一个按钮和一些其他小部件。中心 Pane (BorderLayout.CENTER) 是我的 DrawnObject 的显示位置。

// Called when button is pushed/clicked
public static void trigger()
{
DrawnObject shape = new DrawnObject();
window.setLayout(new BorderLayout());
window.getContentPane().add(shape, BorderLayout.CENTER);
window.pack;
}

public class DrawnObject extends JComponent()
{
@Ghi đè
public Dimension getMinimumSize()
{
return new Dimension(100, 100);
}

@Ghi đè
public Dimension getPreferredSize()
{
return new Dimension(500, 500);
}

@Ghi đè
public Dimension getMaximumSize()
{
return new Dimension(700, 700);
}

@Ghi đè
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.setColor(Color.RED);
g.fillRect(10, 10, 10, 10);
}
}

我已经尝试将 Graphics 对象转换为 Graphics2D 并使用适当的绘制方法,但这没有帮助。

1 Câu trả lời

尝试改变颜色...

super.paintComponent(g);
g.setColor(Color.RED);
g.fillRect(10, 10, 10, 10);

图形上下文颜色默认设置为组件背景色

nhập mô tả hình ảnh ở đây

public class PaintTest01 {

public static void main(String[] args) {
new PaintTest01();
}

public PaintTest01() {
EventQueue.invokeLater(new Runnable() {
@Ghi đè
công khai void run() {
thử {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException ex) {
} catch (InstantiationException ex) {
} catch (IllegalAccessException ex) {
} catch (UnsupportedLookAndFeelException ex) {
}

JFrame frame = new JFrame("Test");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(new DrawPane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}

public class DrawPane extends JPanel {

@Ghi đè
public Dimension getPreferredSize() {
return new Dimension(30, 30);
}

@Ghi đè
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.RED);
g.fillRect(10, 10, 10, 10);
}
}
}

Đã cập nhật

从你问题中的更新代码来看,它无法编译......

你在构造函数中创建了一个名为window的JFrame,它是一个局部变量...

public static void main(String[] args)
{
JFrame window = new JFrame();
window.setLayout(new BorderLayout());
window.setVisible(true);
}

然后您尝试将 DrawObject 添加到窗口...

public static void trigger()
{
DrawnObject shape = new DrawnObject();
window.setLayout(new BorderLayout());
window.getContentPane().add(shape, BorderLayout.CENTER);
window.pack;
}

但是因为 cửa sổ 是未定义的,你的例子不能编译。

编译的唯一方法是如果你在类级别有一个名为 cửa sổ 的静态变量,在这种情况下,它应该产生一个 NullPointerException,除非你已经初始化了那个变量

public class MyDrawing {
public static JFrame window = new JFrame();

这意味着您有两个框架,一个是在构造函数中创建的,另一个是作为静态级别类字段创建的。这行不通,因为它们是不同的实例

关于java - 图形未绘制/出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12931326/

27 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com