gpt4 book ai didi

java - 在 JFrame 上画线时出现问题

转载 作者:搜寻专家 更新时间:2023-11-01 02:03:54 24 4
gpt4 key购买 nike

我正在尝试编写一个程序,在屏幕上显示一堆线条,这些线条的坐标将由另一个程序确定。

在这样做时,我试图从此处修改 jasssuncao 的代码,这样我就不必单击任何按钮来获取行:How to draw lines in Java

这是我现在拥有的:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.LinkedList;

import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class LineDrawing extends JComponent{

private static class Line{
final int x1;
final int y1;
final int x2;
final int y2;
final Color color;

public Line(int x1, int y1, int x2, int y2, Color color) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
this.color = color;
}
}

private final LinkedList<Line> lines = new LinkedList<Line>();

public void addLine(int x1, int x2, int x3, int x4) {
addLine(x1, x2, x3, x4, Color.black);
}

public void addLine(int x1, int x2, int x3, int x4, Color color) {
lines.add(new Line(x1,x2,x3,x4, color));
repaint();
}

public void clearLines() {
lines.clear();
repaint();
}

@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
for (Line line : lines) {
g.setColor(line.color);
g.drawLine(line.x1, line.y1, line.x2, line.y2);
}
}

public static void main(String[] args) {
JFrame testFrame = new JFrame();
testFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
final LineDrawing comp = new LineDrawing();
comp.setPreferredSize(new Dimension(1000, 400));
testFrame.getContentPane().add(comp, BorderLayout.CENTER);
comp.addLine(100, 100, 100, 100, new Color(24, 24, 24));
testFrame.pack();
testFrame.setVisible(true);
}
}
}

但是,这样做不会显示任何一行。为什么代码不显示任何内容?谢谢!

最佳答案

感谢一个完整的例子,但有几件事值得一提:

  • 您的行需要一个非零大小;注意 drawLine() 所需的坐标:

    comp.addLine(10, 10, 100, 100, Color.blue);
  • 您的 JComponent 可能需要是 opaque :

    comp.setOpaque(true);
  • event dispatch thread构造和操作 Swing GUI 对象, 对于 example .

  • 当你真的想覆盖 getPreferredSize() 时,不要使用 setPreferredSize() .

image

关于java - 在 JFrame 上画线时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39239703/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com