1

我在 Jframe 中有一个 JPanel。我想在 JPanel 内画一条线,使用paint(Graphics g) 方法。但它不起作用。请有人在这个问题上帮助我。这是代码。谢谢大家。

import java.awt.Color;

import java.awt.Graphics;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.SwingUtilities;

public class JavaGraph {

JPanel myPanel;

public JPanel createPanel()
{

    myPanel=new JPanel();
    myPanel.setLayout(null);
    //myPanel.setBackground(Color.black);
    return myPanel;

}
public static void  display()
{
    JFrame frame=new JFrame();
    JavaGraph j=new JavaGraph();
    frame.add(j.createPanel());
    frame.setVisible(true);
    frame.setSize(400,400);
    }

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable()
            {
        public void run()
        {
            display();
        }
            });
}

}

4

1 回答 1

1

你会

  • 覆盖getPreferredSizefor JPanel,否则JPanelJava2D 仅返回零Dimension

  • 覆盖paintComponent(),更多见Oracle 教程

  • 阅读 Oracle 教程初始线程

你不会

  • myPanel.setLayout(null);使用空布局

  • frame.setSize(400,400);forJFrameJPanel,因为JComponents( override getPreferredSize) 被指定为返回正确的容器DimensionJFrame.pack(before JFrame.setVisible)以计算、确定容器的正确大小(以像素为单位)

  • frame.setVisible(true);在调用之后调用任何代码来设置、更改或初始化 Swing GUI

于 2013-10-08T15:35:41.177 回答