当前位置: 首页 > 知识库问答 >
问题:

如何在我制作的Jpanel上作画?

范京
2023-03-14

我正在尝试使用“绘画组件”或“绘画”来显示我添加到框架中的 JPanel 上的形状。我尝试了许多教程,但它们似乎只是使整个框架成为“面板”。我想添加到我的JPanel中,我已经添加到我的框架中。

这是我到目前为止的代码:

public class SelectGeometricFigures extends JPanel {
    
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.YELLOW);
        g.fillOval(0, 0, 60, 60);
    }

    public static void main(String[] args) {
             SelectGeometricFigures g = new SelectGeometricFigures();
             JFrame f = new JFrame("Select Shapes");
             f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
             f.setLayout(null);
             
             JPanel drawingPanel = new JPanel();
             
             drawingPanel.setBounds(50, 0, 300, 200);
             
             Border blackline = BorderFactory.createLineBorder(Color.black);
             drawingPanel.setBorder(blackline);
             
             
             // add to frame
             f.add(drawingPanel);
             f.setSize(500, 500);
             f.setVisible(true);
    }

我不想把框架做成一个巨大的面板并在上面绘图,因为我正在添加单选按钮来创建特定的形状,我只是在网上看到人们向你展示如何为整个框架扩展JPanel。我问的是不可能的吗?

共有1个答案

王叶五
2023-03-14

这里有个例子

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

public class SelectGeometricFigures extends JPanel {
    
    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setColor(Color.YELLOW);
        g.fillOval(0, 0, 60, 60);
    }

    public static void main(String[] args) {
        // Let's create a panel with buttons.
        JPanel buttonPanel = new JPanel(); // FlowLayout is ok 
        buttonPanel.add(new JButton("OK"));
        buttonPanel.add(new JButton("Cancel"));

        // Let's create the drawing panel
        SelectGeometricFigures drawingPanel = new SelectGeometricFigures();
        Border blackline = BorderFactory.createLineBorder(Color.black);
        drawingPanel.setBorder(blackline);

        // Let's setup the frame, add our panels and show it 
        JFrame f = new JFrame("Select Shapes");
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
        f.getContentPane().add(drawingPanel); // to the center
        f.getContentPane().add(buttonPanel, BorderLayout.SOUTH); // and below
             
        f.setSize(500, 500);
        f.setVisible(true);
    }
}

我去掉了< code > null -布局。JFrame的内容窗格默认使用BorderLayout,所以我没有创建另一个JPanel。关于布局组件的更多信息可以在Java教程中找到。

编辑:这是此示例所示的 JFrame 的缩小图像

 类似资料:
  • 我想知道如何使背景渐变,这是在另一个J面板。在互联网上找到了许多文章,但他们都演示了如何覆盖J面板的画质组件(),而不是如何为它里面的j面板做。 我使用Netbean IDE。我创建了一个新的J面板类,可以覆盖它的画质组件()。我在上面有另一个j面板(拖 这是我为父母尝试的方式。成功了。我怎样才能为子 jpanel 覆盖它?

  • 问题内容: 我在Heroku(Cedar stack)上安装了python / django应用程序,并希望仅通过https进行访问。我已启用“ ssl搭载”选项,并且可以通过https连接到它。 但是,禁用http访问或重定向到https的最佳方法是什么? 问题答案: 当请求为ssl时,Heroku将HTTP_X_FORWARDED_PROTO设置为https,我们可以使用它来检查:

  • 问题内容: 我将JPanel包裹在JScrollPane中,我希望始终将矩形绘制在同一位置上=使用滚动条移动不会影响矩形的可见性。 我尝试了以下代码: 但是仅当更改整个JPanel的大小时才重新绘制矩形。 问题答案: IIRC 将尝试最大程度地减少滚动完成时的重绘次数,因此它不会总是导致组件被更新。 标准技术是使用。将您添加到下层,并在其上面添加不透明的玻璃面板组件。请参阅Swing教程中的如何使

  • 我是一个新的android studio和尝试让我的第一个应用程序运行。hello world功能正常工作,但当我在第二个应用程序中按下send按钮时,应用程序就会关闭。 我在此基础上编写的网站教程可以在这里找到:https://developer.android.com/training/basics/firstapp/starting-activity 乔希

  • 问题内容: 我有一个JPanel,我为此设置了一些图像作为背景。我需要在图像上方绘制一堆圆圈。现在,圆将基于某个坐标x,y进行定位,其大小将基于某个整数大小。这就是我上课的时间。 如何创建可以执行此操作的方法? 问题答案: 您的方法可能与此类似,其中您也使用一个类来容纳所有圆和绘制例程:

  • 问题内容: 我正在尝试构建 Paint 应用程序,并且在DrawingArea类中做错了什么。问题是当我尝试绘制第二个形状时,第一个形状或图形是自动删除的,因此我需要一些解决方法的想法。所有答案都可以接受。感谢帮助。 有部分 DrawingArea.class 代码: 问题答案: 您需要: 将要绘制的形状存储在列表中,然后在paintComponent()方法中绘制列表中的所有形状,或者 将形状绘