java - 在 java 面板上绘图 - 没有出现任何内容

标签 java swing user-interface drawing paintcomponent

我正在尝试在小程序中的面板上绘图。我有 5 个面板,并对背景进行了着色,以便我可以看到它们的位置。我试图绘制基本的椭圆作为测试,但结果是面板似乎缩小并且没有出现椭圆。

如果有任何帮助,我将不胜感激!!

非常感谢

import java.applet.Applet;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;


public class gui extends Applet{

private JFrame frame = new JFrame("Algorithm Animation");

private JPanel pnlRight = new JPanel();
private JPanel pnlLeft = new JPanel();
private JPanel pnlCenter = new JPanel();
private JPanel pnlTop = new JPanel();
private JPanel pnlBottom = new JPanel();

private JMenuBar mb = new JMenuBar();
private JMenu menuFile = new JMenu("File");
private JMenuItem menuItemQuit = new JMenuItem("Quit");

public void setMenuBar(){
    frame.setJMenuBar(mb);
    menuFile.add(menuItemQuit);
    mb.add(menuFile);
    //listener for quit button
    menuItemQuit.addActionListener(new ListenMenuQuit());

}

public class ListenMenuQuit implements ActionListener {
    public void actionPerformed(ActionEvent e) {
        System.exit(-1);        
    }
}

public void setPanelTop() {
    pnlTop.setBackground(Color.BLUE);
}

public void setPanelBottom() {
    pnlBottom.setBackground(Color.BLUE);
}

public void setPanelLeft() {
    pnlLeft.setBackground(Color.GREEN);
}

public void setPanelCenter() {
    pnlCenter.setBackground(Color.RED);
}

public void setPanelRight() {
    DrawGraph drawG = new DrawGraph();
    pnlRight.add(drawG);
}

public gui() {

    setMenuBar();
    setPanelTop();
    setPanelBottom();
    setPanelLeft();
    setPanelCenter();
    setPanelRight();

    //put panels on the frame
    frame.getContentPane().setLayout(new BorderLayout());
    frame.getContentPane().add(pnlTop, BorderLayout.NORTH);
    frame.getContentPane().add(pnlBottom, BorderLayout.SOUTH);
    frame.getContentPane().add(pnlLeft, BorderLayout.WEST);
    frame.getContentPane().add(pnlCenter, BorderLayout.CENTER);
    frame.getContentPane().add(pnlRight, BorderLayout.EAST);
}

private void launch(){
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
}

public static void main (String[] args) {
    JFrame.setDefaultLookAndFeelDecorated(false);
    gui g = new gui();
    g.launch();
}

}

我还有一个 DrawGraph 类(我认为它不起作用):

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.Ellipse2D;

import javax.swing.JPanel;

public class DrawGraph extends JPanel {

Color c1 = Color.BLUE;
Color c2 = Color.RED;
Color c3 = Color.GREEN;
Color c4 = Color.YELLOW;
Color cl1, cl2, cl3, cl4 = Color.BLACK;

int x = 50, y = 100, w = 20, h = 20;

public DrawGraph(){
    super();
    this.setBackground(Color.ORANGE);
}

@Override
public void paintComponent(Graphics g) {
    super.paintComponent(g);

    Graphics2D g2 = (Graphics2D)g;
    g2.setColor(cl1);
    g2.drawLine(x+10, y+10, x+210, y+10);
    g2.setColor(cl2);
    g2.drawLine(x+210, y+10, x+210, y+210);
    g2.setColor(cl3);
    g2.drawLine(x+10, y+210, x+210, y+210);
    g2.setColor(cl4);
    g2.drawLine(x+10, y+10, x+10, y+210);

    Ellipse2D e1 = new Ellipse2D.Double(x, y, w, h);
    g2.setPaint(c1);
    g2.fill(e1);
    Ellipse2D e2 = new Ellipse2D.Double(x+200, y, w, h);
    g2.setPaint(c2);
    g2.fill(e2);
    Ellipse2D e3 = new Ellipse2D.Double(x, y+200, w, h);
    g2.setPaint(c3);
    g2.fill(e3);
    Ellipse2D e4 = new Ellipse2D.Double(x+200, y+200, w, h);
    g2.setPaint(c4);
    g2.fill(e4);

}
}

任何帮助将不胜感激。

乔什

最佳答案

您可以使用setPreferredSize()方法设置DrawGraph面板的宽度和高度。

public DrawGraph(){
    super();
    this.setBackground(Color.ORANGE);
    setPreferredSize(new Dimension(400,400));
}

关于java - 在 java 面板上绘图 - 没有出现任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8135070/

相关文章:

java - 在内容 Pane 上绘制线条 Java swing

java - 将按钮与框组件对齐

wpf - 创建 WPF UI...如果在 VS2008 中使用设计器,我应该麻烦吗?

java - 在 jframe 中运行 ffplay 视频

Java GUI 变量问题

javascript - 类似于 Java 中的 Quartz Composer 的图形 block 组合库

java - 使用 Java 执行 Jmeter 测试计划

java - 使用自定义 ColorModel 减少颜色时 BufferedImage 禁用抖动?

Java:jasper 报告上的空白页问题

Java 从 map 中检索自定义键对象