jframe中不显示形状

Posted

技术标签:

【中文标题】jframe中不显示形状【英文标题】:Shapes not showing in jframe 【发布时间】:2017-04-25 22:51:18 【问题描述】:

我正在尝试用 Java 制作一个简单的绘图应用程序,但无法对按钮进行操作,现在我的窗口显示了选项,但我需要如何编写代码以在单击形状下拉菜单后执行操作。请帮忙

代码:

    package simplepaint;

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

public class DrawingFrame extends JFrame 
    JButton loadButton,  saveButton, drawButton;
    JComboBox colorList, shapesList;
    JTextField parametersTextField;

    DrawingFrame() 
        super("Drawing Application");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JToolBar toolbar = new JToolBar();
        toolbar.setRollover(true);

        toolbar.add(loadButton=new JButton("Load"));
        toolbar.add(saveButton=new JButton("Save"));

        toolbar.addSeparator();

        toolbar.add(drawButton=new JButton("Draw"));

        toolbar.addSeparator();
        toolbar.addSeparator();

        toolbar.add(new JLabel("Shape"));
        shapesList=new JComboBox(new String[]  "Circle", "Rectangle", "Line","Triangle" );
        toolbar.add(shapesList);

        toolbar.addSeparator();

        toolbar.add(new JLabel("Parameters"));
        toolbar.add(parametersTextField=new JTextField());

        toolbar.add(new JLabel("Color "));
        colorList=new JComboBox(new String[]  "black", "red", "blue",
                "green", "yellow", "orange", "pink", "magenta", "cyan",
                "lightGray", "darkGray", "gray", "white" );
        toolbar.add(colorList);

        getContentPane().add(toolbar, BorderLayout.NORTH);

    
    class DrawPane extends JPanel
      public void paintComponent(Graphics g)
        g.fillRect(20, 20, 100, 200);
       
    

    public static void main(final String args[]) 
        DrawingFrame frame = new DrawingFrame();
        frame.setBounds(100, 100, 600, 500);
        frame.setVisible(true);
    

【问题讨论】:

请帮忙——怎么做?您没有提出具体问题,而是发布了无法解释的代码并给出了广泛的要求。我们这里的大多数人都会把这个问题读成“请为我实现这个程序功能”,这不会很好地解决。相反,您应该展示您实现该功能的尝试,然后如果您的尝试不起作用,请提出一个具体问题,说明什么不起作用或您不理解什么。 请注意,您的 DrawPane 永远不会添加到任何东西——所以它永远不会绘制任何东西。您必须将其添加到您的 JFrame 才能看到任何内容。 【参考方案1】:

您可以先查看Custom Painting Approaches。

它显示了进行自定义绘画的两种常用方法。

    将要绘制的对象存储在ArrayList 直接画到BufferedImage

这些例子展示了如何用指定的颜色绘制一个矩形。

修改代码绘制圆和线应该相对简单,因为它们也只需要一个起点和终点。

绘制三角形会更复杂。

【讨论】:

我检查了你的代码,只有当我想添加更多选项来选择形状时,我才能绘制矩形我可以如何添加? @Nayank:通过理解代码并使其适应您的需求。 Camickr,我认为您正在回答帮助吸血鬼的问题。 @Nayank,添加您的组合框,然后在您添加的绘画代码中添加一些 if 语句。如果是矩形,则绘制矩形。 if circle draw circle etc.【参考方案2】:

您可以做的第一件事是创建一个ActionListener,以便在单击按钮时执行回调。在您的构造函数中,您可以执行以下操作:

    drawButton.addActionListener(new ActionListener() 
        @Override
        public void actionPerformed(ActionEvent e) 
            System.out.println("hello");
        
    );

您会注意到,每次单击绘图按钮时,都会在标准输出中打印 'hello'。

请参阅@camickr 的回答,了解如何实际完成绘制形状的工作。

【讨论】:

以上是关于jframe中不显示形状的主要内容,如果未能解决你的问题,请参考以下文章

JPanel 在 JFrame 中不可见

JFrame 不显示任何组件

在单击按钮时创建的项目在 JFrame 中不可见

JFrame 中的 JPanel 有时不显示内容。为啥?

具有渐变的可绘制视图背景在预览中正确显示但在模拟器中不正确

JScrollPane添加到JFrame中,怎么不显示呢?