Java JFrame 对话框问题

标签 java swing jframe jpanel joptionpane

当我运行程序时,我遇到了 JFrame Buffer 的一些问题,我不知道问题到底是什么。当我运行该程序时,它会在缓冲区的左上角显示一些对话框部分。

这是我的程序的输出:

/image/SpVSD.jpg

下面是代码

谢谢。

import java.awt.*;
import java.util.*;
import javax.swing.*;

public class Main extends JPanel 
{
    public void paintComponent(Graphics g) 
    {
        super.paintComponent(g);
        int[] x1 = new int[10];
        int[] y1 = new int[10];
        int i,n;
        Polygon p=new Polygon();
        n = Integer.parseInt(JOptionPane.showInputDialog("Enter no. of co-ordinates of polygon: "));
        System.out.println(" no. of co-ordinates of polygon are :"+n);

        for(i=0;i<n;i++) 
        {  
            x1[i] = Integer.parseInt(JOptionPane.showInputDialog("Enter x co-ordinates of polygon: "));
            y1[i] = Integer.parseInt(JOptionPane.showInputDialog("Enter y co-ordinates of polygon: "));
        }
        for(i=0;i<n-1;i++)
        {
            g.drawLine(x1[i],y1[i],x1[i+1],y1[i+1]);
        }
        g.drawLine(x1[n-1],y1[n-1],x1[0],y1[0]);
    }

    public static void main(String[] args)
    {
        JFrame frame = new JFrame();
        frame.setTitle("Polygon");
        frame.setSize(500,500);
        Container contentPane = frame.getContentPane();
        contentPane.add(new Main());
        frame.setVisible(true);
    }
}

最佳答案

从不通过绘画方法显示 JOptionPane。绘画方法仅用于绘画,不用于获取用户输入。

相反,您需要执行以下操作:

  1. 应该从 main 方法中显示 JOptionPane 以收集 x/y 参数。

  2. 修改您的 Main() 类,使其具有类似于 addPoint(int x, int y) 的方法。

  3. 上面的方法会将 x/y 值保存到类中的 ArrayList 对象中。我会将 Point 对象存储在此列表中。

  4. 绘画方法将遍历列表并绘制每一行。

关于Java JFrame 对话框问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35959967/

相关文章:

java - Java Swing 中的 GridBagLayout

java - 如何显示 JList 的水平和垂直滚动条?

java - MidiSystem.getReceiver() 卡住 JFrame

java - JButtons 和 ActionListeners 的问题

java - 深度优先搜索遇到 java.lang.OutOfMemoryError

java - 旋转位图像素

java - Web3j Transfer.sendFunds() 返回错误 "insufficient funds for gas * price + value"

java - 如何更改基于 JPanel 的 swing 应用程序(或窗口)的默认图标

java - 向使用 java 图形的 contentPane 添加按钮

java - 使用 Java 8 将 UTC 日期字符串转换为 SQL 时间戳