㈠ java SWT中Canvas控件画图问题。
没有用Canvas,因为不知道你所说的滑动条,具体是指什么。是不是JScrollPane的横纵滚动条。
JScrollPane +JPanel
可以实现,下边是代码。
--------------------------------------------------------------------------------
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class LineAppFrame extends JFrame {
public LineAppFrame() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(550, 550);
setLocationRelativeTo(null);
JScrollPane scrollPane = new JScrollPane();
MyCanvas panel = new MyCanvas();
panel.setPreferredSize(new Dimension(panel.width, panel.height));
scrollPane.setViewportView(panel);
getContentPane().add(scrollPane, BorderLayout.CENTER);
setVisible(true);
}
public static void main(String[] args) {
new LineAppFrame();
}
}
class MyCanvas extends JPanel {
int width = 0;
int height = 0;
private ImageIcon icon;
public MyCanvas() {
icon = new ImageIcon("D:\\2.jpg");
width = icon.getIconWidth();
height = icon.getIconHeight();
}
public void paint(Graphics g) {
super.paint(g);
g.drawImage(icon.getImage(), 0, 0, null);
}
}
㈡ java中如何用画布绘制矩形图形
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
classOvalcanvasextendsCanvas
{
intN=10;
intx[]=newint[N];
inty[]=newint[N];
Ovalcanvas()
{
setSize(300,200);
setBackground(Color.cyan);
}
publicvoidsetOval(int[]x,int[]y,intN)
{
this.N=N;
for(inti=0;i<N;i++)
{
this.x[i]=x[i];
this.y[i]=y[i];
}
}
publicvoidpaint(Graphicsg)
{
g.drawPolygon(x,y,N);
}
}
publicclassExample6_
{
Ovalcanvascanvas;
TextFieldin_N;
Buttonbtn;
Example6_7()
{
super("画布上绘制多边形");
setSize(400,300);
setVisible(true);
setDefaultCloseOperation(EXIT_ON_CLOSE);
in_N=newTextField(6);
setLayout(newFlowLayout());
add(newLabel("请输入变数:"));
add(in_N);
btn=newButton("确定");
btn.addActionListener(this);
add(btn);
canvas=newOvalcanvas();
add(canvas);
validate();
}
publicvoidactionPerformed(ActionEvente)
{
intN=Integer.parseInt(in_N.getText());
intx[]=newint[N];
inty[]=newint[N];
for(inti=0;i<N;i++)
{
x[i]=(int)(Math.random()*200);
y[i]=(int)(Math.random()*200);
}
canvas.setOval(x,y,N);
canvas.repaint();
}
publicstaticvoidmain(String[]args)
{
newExample6_7();
}
}
㈢ java swing组件 如何使子组件正好铺满父组件整个可显示区域
setLayout(null); 这一句去掉就行
JFrame 默认的就是BorderLayout管理器,只要将JPanel 加入到中间位置就行
㈣ java panel 和 canvas 主要区别是什么啊 swing里没有canvas
从词源可以看出 Canvas,麻布->画布->画油画的画板。 Panel 小块布->块版->面板、墙板、地板 Canvas,直接继承自Component组件,主要用于绘图,没有控件,更原始 Panel,继承自Container容器,主要用于镶嵌在其他控件里面当面板。
㈤ java中的canvas类有什么作用
从词源可以看出
Canvas,麻布->画布->画油画的画板。
Panel 小块布->块版->面板、墙板、地板
Canvas,直接继承自Component组件,主要用于绘图,没有控件,更原始
Panel,继承自Container容器,主要用于镶嵌在其他控件里面当面板。
由于Java SE版的Canvas和Panel都继承自Component,共用Component的paint(Graphics g)
方式绘制自己的内容。由于使用同一个Graphic类,所以那些drawXXX都一致。
绘制的方式一样,2者的绘制速度就没大区别,
Canvas更适合画全屏的、没有控件的情形。像手机上JavaME就主要用Canvas
Panel适合嵌入到其他控件中使用。
㈥ java swing,怎么在图片里让别人添加文字
swing里面有没现成的控件 只能自己写一个
简单举例来说 可以继承JPanel控件写个JDrawPanel
用BufferedImage image来装载你需要修改的图片
在JDrawPanel中重写printComponents(Graphics g)方法,将image draw到背景上
在panel上加mouse事件 当点击时弹出对话框 让用户输入文字 然后调用image的 image.createGraphics().drawString(String s)方法 把文字加上去
再调用panel的repaint()方法 把文字显示出来
还有Canvas组件还有一些别的组件可以使用 但是都需要自己加功能
㈦ JAVA swing编程 画图问题 paint()方法
super.paint()的作用是把当前的区域清空,每次resize的时候就会自动调用paint()方法,paint()方法里先调用了super.paint()清空当前区域,再画一个矩型筐,当然每次只有一个了。 另外你的算法也有漏洞,当你想从右上角拉到左下角画矩形的时候是没有反应的。 下面这个程序修改了只画一个的错误,改进了右上角拉到左下角的漏洞,还增加了拖动的中间过程。没时间给你写注释,自己看吧。 import java.awt.*; import java.awt.event.*; import java.util.Vector; import javax.swing.*; public class Hello extends JFrame implements MouseListener,MouseMotionListener{ int x一,y一; Vector rectangles=null; public Hello(){ this.setTitle("画图小程序"); this.addMouseListener(this); this.addMouseMotionListener(this); this.setSize(四00,四00); rectangles=new Vector(); this.setVisible(true); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void paint(Graphics g){ super.paint(g); g.setColor(Color.BLUE); for(int i=0;i<rectangles.size();i++){ Rectangle rec=rectangles.get(i); int tmp_x=rec.x; int tmp_y=rec.y; int tmp_w=rec.width; int tmp_h=rec.height; g.drawRect(tmp_x,tmp_y,tmp_w,tmp_h); } } public static void main(String[] args) { new Hello(); } public void mouseClicked(MouseEvent e) { } public void mouseEntered(MouseEvent e) { } public void mouseExited(MouseEvent e) { } public void mousePressed(MouseEvent e) { x一=e.getX();y一=e.getY(); } public void mouseReleased(MouseEvent e) { int x二=e.getX(); int y二=e.getY(); int x=0; int y=0; Graphics g=this.getGraphics(); g.setColor(Color.BLUE); int tmp_w=0; int tmp_h=0; if(x一x二){ x=x二; tmp_w=x一-x二; } if(y一y二){ y=y二; tmp_h=y一-y二; } rectangles.add(new Rectangle(x,y,tmp_w,tmp_h)); this.repaint(); } public void mouseDragged(MouseEvent e) { int x二=e.getX(); int y二=e.getY(); int x=0; int y=0; Graphics g=this.getGraphics(); g.setColor(Color.BLUE); int tmp_w=0; int tmp_h=0; if(x一x二){ x=x二; tmp_w=x一-x二; } if(y一y二){ y=y二; tmp_h=y一-y二; } paint(g); g.drawRect(x,y,tmp_w,tmp_h); } public void mouseMoved(MouseEvent e) { }