GUI Java程序 – 绘图程序
发布时间:2020-05-24 08:38:39 所属栏目:Java 来源:互联网
导读:我一直试图弄清楚我的代码出了什么问题.我们的想法是创建一个小的Paint程序,并有红色,绿色,蓝色和清晰的按钮.我有一些我能想到的工作,但无法弄清楚代码有什么问题.该程序打开,并立即关闭. import java.awt.*;import java.awt.event.*;import javax.swing.*;pu
|
我一直试图弄清楚我的代码出了什么问题.我们的想法是创建一个小的Paint程序,并有红色,绿色,蓝色和清晰的按钮.我有一些我能想到的工作,但无法弄清楚代码有什么问题.该程序打开,并立即关闭. import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Paint{
public static void main(String[] args){
gui g = new gui();
g.setVisible(true);
}
}
public class gui extends JComponent implements ActionListener{
JButton red,green,blue,clear;
Image image;
Graphics2D draw;
int x,y,prevX,prevY;
gui(){
JFrame frame = new JFrame("Paint");
Container content = frame.getContentPane();
content.setLayout(new BorderLayout());
setDoubleBuffered(false);
JPanel panel = new JPanel();
content.add(panel,BorderLayout.SOUTH);
panel.setPreferredSize(new Dimension(32,68));
panel.setMinimumSize(new Dimension(32,68));
panel.setMaximumSize(new Dimension(32,68));
red = new JButton("Red");
green = new JButton("Green");
blue = new JButton("Blue");
clear = new JButton("Clear");
red.setPreferredSize(new Dimension(50,16));
green.setPreferredSize(new Dimension(50,16));
blue.setPreferredSize(new Dimension(50,16));
panel.add(red);
panel.add(green);
panel.add(blue);
panel.add(clear);
red.addActionListener(this);
green.addActionListener(this);
blue.addActionListener(this);
clear.addActionListener(this);
frame.setSize(500,500);
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
prevX = e.getX();
prevY = e.getY();
}
});
addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){
x = e.getX();
y = e.getY();
draw.drawLine(prevX,prevY,x,y);
repaint();
prevX = x;
prevY = y;
}
});
}
public void paintComponent(Graphics g){
if(image==null){
image = createImage(getSize().width,getSize().height);
draw = (Graphics2D)image.getGraphics();
draw.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);
draw.setPaint(Color.white);
draw.fillRect(0,getSize().width,getSize().height);
draw.setPaint(Color.black);
repaint();
}
g.drawImage(image,null);
}
public void actionPerformed(ActionEvent e) {
if( e.getSource()==red){
draw.setPaint(Color.red);
repaint();
}
if( e.getSource()==green){
draw.setPaint(Color.green);
repaint();
}
if( e.getSource()==blue){
draw.setPaint(Color.blue);
repaint();
}
if( e.getSource()==clear){
draw.setPaint(Color.white);
draw.fillRect(0,getSize().height);
draw.setPaint(Color.black);
repaint();
}
}
}
解决方法你必须使用框架和面板的可见性属性frame.setVisible(true); line g.setVisible(true);你没有为你工作,因为你扩展了你的类jcomponent并且你正在使用框架而没有设置它的属性来设置它可见. 您的面板会出现同样的问题,因此您必须设置其属性以及i-e panel.setVisible(true); 以下是添加这些属性后正在运行的完整代码 import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionAdapter;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class Paint{
public static void main(String[] args){
gui g = new gui();
g.setVisible(true);
}
}
class gui extends JComponent implements ActionListener{
JButton red,16));
panel.add(red);
panel.add(green);
panel.add(blue);
panel.add(clear);
panel.setVisible(true);
red.addActionListener(this);
green.addActionListener(this);
blue.addActionListener(this);
clear.addActionListener(this);
frame.setSize(500,500);
frame.setVisible(true) ;
addMouseListener(new MouseAdapter(){
public void mousePressed(MouseEvent e){
prevX = e.getX();
prevY = e.getY();
}
});
addMouseMotionListener(new MouseMotionAdapter(){
public void mouseDragged(MouseEvent e){
x = e.getX();
y = e.getY();
draw.drawLine(prevX,getSize().height);
draw.setPaint(Color.black);
repaint();
}
}
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
