java jpanel 问题

来源:百度知道 编辑:UC知道 时间:2024/06/26 06:15:34
我是java的新手
请问为什麼我的jpanel 只有一小块,而且似乎不能画图
以下附上我的原始码,请问有高手可以帮我改吗

import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import javax.swing.event.*;
public class ImageViewer3 extends JApplet implements MouseListener,MouseMotionListener
{
Container first;
private JButton big = new JButton("放大");
private JButton small = new JButton("缩小");
private JButton print = new JButton("列印");
JScrollBar hscroll =new JScrollBar(JScrollBar.HORIZONTAL);
JPanel p =new JPanel();
int tailleImageY,tailleImageX;
private Image offI,picture;
private Graphics offG;
int width,height;
private MediaTracker imageTracker;
public void init()
{
first=getContentPane();
getContentPane().add(p);
first.setLayout(new FlowLayout(FlowLayout.LEFT,0,0));
String pic = getParameter("Namepic");

JPanel只是概念上的一个容器,当然不是画图了

可以用于将功能相似的放在一个JPanel中,以便

约束它们的位置,不是用来向按钮那样用的!

我提点建议。绘图的话Awt与Swing是不一样的。
在swing中,要让JPanel绘图,是要覆盖 paintComponent(Graphics g)方法,而不是repaint()方法。
在awt中是paint(Graphics g)方法。

而且一般这个方法第一句是super.paintComponent(g),用来清除。

答复修改:实例代码:
package test;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Graphics;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class DrawTest extends JFrame
{
public DrawTest()
{
Container con=this.getContentPane();
con.setLayout(new BorderLayout());
DrawPanel panel=new DrawPanel();
this.add(panel);

this.setSize(300,240);
this.setTitle("draw test");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}

public class DrawPanel extends JPanel