【问题标题】:Draw in jPanel inside a jDialog在 jDialog 内的 jPanel 中绘制
【发布时间】:2017-11-03 04:52:45
【问题描述】:

我有jDialog,它在BorderLayout"south""north""center" 我有带有元素的jPanel(在“中心”的jPanel 中没有任何内容。 "center" jPanel 称为 Map。

我是这样的:

主要

  Graphics t = Map.getGraphics();
    paintComponent(t);

不是主要的。

public void paintComponent(Graphics g){
 super.paintComponents(g);
 g.drawLine(0, 0, 50, 150);
}

我什么都画不出来。我犯了什么错误?

【问题讨论】:

  • 你把你的paintComponent()放在哪里了?
  • 首先在newDlg构造函数中放置第一部分代码。然后在它被放置之后paintComponent()。
  • 绘画不能这样工作,你不应该直接调用paintComponent(或任何绘画方法)。您应该更改一些共享状态,调用repaint 并等待绘制系统重新绘制您的组件
  • 您需要停止猜测这些东西是如何工作的,并开始研究 API 的工作原理并设法使用它。首先查看Performing Custom PaintingPainting in AWT and Swing,了解有关绘画工作原理的更多详细信息
  • 顺便说一句 - 不要添加 IDE 的标签,除非问题是 with IDE。 (99.99% 的情况下不是。问题出在 Java 代码上,并且在任何 IDE 中都会出现问题。)

标签: java swing jpanel paintcomponent


【解决方案1】:
     JPanel Map = new JPanel() {
             public void paintComponent( Graphics g ) {
                super.paintComponent(g);
                Graphics2D g2 = (Graphics2D)g;

                Line2D line = new Line2D.Double(10, 10, 40, 40);
                g2.setColor(Color.blue);
                g2.setStroke(new BasicStroke(10));
                g2.draw(line);
             }
        };
        getContentPane().add(Map, java.awt.BorderLayout.CENTER);

        Map.add(new JLabel(pseudo));
  pack();

在 dlg 构造函数中。 谢谢你没有帮助它工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多