我正在使用NetBeans在Java中开发一个小型桌面应用程序.由于我是java的新手,所以我主要是拖放控件并使用它们.我在我的应用程序中有的是JFrame,在JFrame上我放置一个JScrollPane,我在其中显示一些文本信息.
现在我在上面添加了另一个JScrollPane,并想要绘制一些圆角矩形,然后用虚线连接这些矩形.我还想在每个矩形中放置一些小文本.
我需要从哪里开始实现上述任务的指导?一些指向优秀教程的链接也会有所帮助
我试图在一个非常基本的程序中模拟一场战斗,但由于这是我第一次使用Java编写一个大程序,所以我对如何继续进行操作几乎一无所知.我以为我会有一个600×600的大面板并使用Graphics2D来绘制20x20矩形的地形......不幸的是,即使有几个教程,我也不知道该怎么做.
我有10种不同类型的地形可以循环,还有5种不同的景观轮廓.基本上我想让程序做的是当我在组合框中选择一个特定的轮廓时,它描绘了战斗中的景观和两个相对的边(虽然我还没有到那里)
老实说,我在这个项目上没有取得很大进展.我应该只使用Graphics2D和矩形这样的东西,还是应该切换到OpenGL或类似的东西?虽然凭借我目前的Java经验,我认为如果没有帮助我就不会有太大的帮助.无论如何,这是我到目前为止所拥有的:
public class Map extends JPanel {
    int n = 1;
    int x; int y;
    int Area = 750;
    public Color City = new Color(214,217,223);
    public Color Desert = new Color(255,204,102);
    public Color DirtRoad = new Color(153,102,0);
    public Color Forest = new Color(0,102,0);
    public Color Hills = new Color(51,153,0);
    public Color Lake = new Color(0,153,153);
    public Color Mountains = new Color(102,102,255);
    public Color Ocean = new Color(0,0,153);
    public Color PavedRoad = new Color(51,51,0);
    public Color Plains = new …我试图通过一系列鼠标点击画一条线.
例如,当我从屏幕上的一个点点击到下一个点时,它会连接线条,然后我可以继续点击它继续绘制连续绘图线的下一个点.
这里有一个例子:练习2下的http://oneslime.net/java/Tutorial_2
我相信我的逻辑中有一些错误(不画线,只是一点),但我似乎无法找到它!
有人可以帮帮我吗?
这是我的代码:
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
public class RoadCreator extends JPanel {
    private MouseHandler mouseHandler = new MouseHandler();
    private Point previousPoint = new Point();
    private Point nextPoint = new Point();
    private boolean drawing;
    public RoadCreator() {
        this.setPreferredSize(new Dimension(640, 480));
        this.addMouseListener(mouseHandler);
       this.addMouseMotionListener(mouseHandler);
    }
    @Override
    protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        Graphics2D g2d = (Graphics2D) g;
        g2d.setColor(Color.blue);
        g2d.setRenderingHint(
            RenderingHints.KEY_ANTIALIASING,
            RenderingHints.VALUE_ANTIALIAS_ON);
        g2d.setStroke(new BasicStroke(8,
            BasicStroke.CAP_ROUND, BasicStroke.JOIN_BEVEL));
        g.drawLine(previousPoint.x, previousPoint.y, nextPoint.x, nextPoint.y);
    }
    private class …我正在使用PrinterJob对象来打印我的Bufferedimage,我有一个BufferedImage,我将其处理并将其发送到具有Paper Format等的Printer作业,但是我无法使其适合我的证卡打印机。当我将其保存到硬盘上并通过Windows打印管理器进行打印时,它在我的证卡打印机上打印得很好,但是使用PrinterJob时,它太大了,无法容纳证卡
卡的尺寸为86X54mm,缓冲图像的尺寸为1300x816px代码:
    PrinterJob printjob = PrinterJob.getPrinterJob();
    printjob.setJobName("CardPrint");
    Printable printable = new Printable() {
            public int print(Graphics pg, PageFormat pf, int pageNum) {
                    if (pageNum > 0) {
                            return Printable.NO_SUCH_PAGE;
                    }
                    JLayeredPane j1 = new JLayeredPane();
                    Dimension size = j1.getSize();
                    j1.print(bi.getGraphics());
                    Graphics2D g2 = (Graphics2D) pg;
                    g2.translate(pf.getImageableX(), pf.getImageableY());
                    g2.drawImage(bi, 0, 0, (int) pf.getWidth(), (int) pf.getHeight(), null);
                    return Printable.PAGE_EXISTS;
            }
    };
    Paper paper = new Paper();
    paper.setImageableArea(0, 0, 0, 0);
    paper.setSize(1.15, 0.72);
    PageFormat format = new PageFormat();
    format.setPaper(paper);
    printjob.setPrintable(printable, format);
    try …我正在尝试创建类似程序的绘画,我正在实现一个桶填充工具.我正在存储已绘制的所有点并使用Graphics2D drawLine绘制实际线,因此我不想存储桶填充的所有点(因此我不想进行填充).
对于桶填充,到目前为止,我已经使用a BufferedImage来填充不在我的列表中但仍在绘制的点.
我想做的一件事就是只存储最外面的点,而不是fillPolygon使用这些点来使用Graphics2D .唯一的问题是我不确定如何找到这些点.
我被困在这里,所以有人有任何想法吗?
我正在尝试在 JPanel 上绘图。当该函数drawField被调用时,它什么也不绘制。可能是什么原因?
private void drawField() {
    try {
        Graphics2D field = (Graphics2D) jPanel2.getGraphics();
        field.drawLine(0, 0, 100 , 100);
    }catch(Exception exc) { exc.printStackTrace();}
}
它是从主类构造函数调用的。
我正在尝试学习如何使用 java 创建一个游戏循环并每秒绘制一个新屏幕一定次数。游戏循环工作正常,但是当我尝试使用 repaint() 调用paint方法时,未调用paint方法。这是我的代码:
import javax.swing.JButton;
import javax.swing.JComponent;
import java.awt.Graphics;
import javax.swing.JFrame;
import java.awt.image.*;
import javax.swing.Icon;
import javax.swing.ImageIcon;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class mainFrame extends Thread{
static boolean gameIsRunning = false;
MyCanvas2 myCanvas2 = new MyCanvas2();
static final int TARGET_FPS = 1;
static int x = 10;
static int y = 10;
static long startTime = 0;
static long elapsedTime = 0;
static long waitTime = 0;
public void createFrame(){
  JFrame window = new JFrame("Out from …