编程出现点问题求救下

iny365com 2008-12-23 02:54:33
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;

public class Painter2 extends JFrame
{
private int topX,topY,width,fontSize,
height,bottomX,bottomY,shape;
private boolean clear,textOn,filled;
private Color drawingColor;
private String font;
private JTextField text;
private JPanel panel1,panel2,panel3;
private JRadioButton ovalBox,rectBox,lineBox;
private ButtonGroup shapeGroup;
private JCheckBox fillBox;
private JComboBox colorList, fontList, sizeList;
private JButton clearButton;
private String colorNames[] = {"Black", "Green", "Blue", "Red", "Cyan"
};
private Color colors [] = { Color.black, Color.green, Color.blue, Color.red, Color.cyan };

private String fontNames[] = { "Serif", "SansSerif", "Monospaced"

};

private String szieNames[] = { "9", "10", "22", "72" };
private int sizes[] = { 9, 10, 22, 72 };
private final int OVAL = 1, LINE = 2, RECT = 3;
private ToolWindow tools;
public Painter2 ()
{
addMouseListener( new MouseHandler() );
drawingColor = Color.black;
shape = OVAL;
font = "Serif";
fontSize = 9;
setSize( 300,300 );
setVisible( true );
tools = new ToolWindow();
}


public void paint( Graphics g)
{
g.setColor( drawingColor );
if ( textOn )
{
g.setFont( new Font( font,Font.PLAIN, fontSize) );
g.drawString ( text.getText(), topX, topY );
textOn = false;
return;


}
if (shape != LINE)
{
topX = Math.min( topX,bottomX );
topY = Math.min( topY,bottomY );
}
if (filled && shape != LINE )
switch ( shape )
{
case OVAL:
g.fillOval(topX, topY, width, height );
break;
case RECT:
g.fillRect(topX, topY, width, height );
break;
}
else
switch (shape) {
case OVAL:
g.drawOval (topX, topY, width, height );
break;
case LINE:
g.drawLine(topX, topY, width, height );
break;
case RECT:
g.drawRect( topX, topY, width, height );
break;
}
if ( clear == true )
{ g.setColor( Color.white);
g.fillRect( 0,0, getSize().width, getSize().height );
clear = false;
}
}


private class ToolWindow extends JFrame {
public ToolWindow()
{
text = new JTextField( "Text", 20 );
text.addActionListener
(
new ActionListener()
{
public void actionPerformed( ActionEvent event )
{
textOn = true;
repaint();

}

}

);

fontList = new JComboBox( fontNames );
fontList.setMaximumRowCount( 3 );
fontList.addItemListener(
new ItemListener(){
public void itemStateChanged( ItemEvent event )
{
font = fontNames [ fontList.getSelectedIndex() ];

}

}

);

sizeList = new JComboBox( sizeNames );

sizeList.setMaximumRowCount( 3 );
sizeList.addItemListener(new ItemListener()
{
public void itemStateChanged( ItemEvent event )
{
font = fontSize [ sizeList.getSelectedIndex() ];

}

}

);

colorList = new JComboBox( colorNames );

colorList.setMaximumRowCount( 3 );
colorList.addItemListener(new ItemListener()
{
public void itemStateChanged( ItemEvent event )
{
drawingColor = colors [ colorList.getSelectedIndex() ];
}
}
);
clearButton = new JButton( "Clear" );
clearButton.addActionListener( new ClearButtonHandler() );
fillBox = new JCheckBox( "filled" );
FillBoxHandler fillHandle = new FillBoxHandler();
fillBox.addItemListener( fillHandle );
ovalBox = new JRadioButton ( "Oval", true );
lineBox = new JRadioButton ( "Line", false );
rectBox = new JRadioButton ( "Rectangle", false );
RadioButtonHandler handler = new RadioButtonHandler();
ovalBox.addItemListener( handler );
lineBox.addItemListener( handler );
rectBox.addItemListener( handler );
shapeGroup.add( ovalBox );
shapeGroup.add( lineBox );
shapeGroup.add( rectBox );
panel1 = new JPanel();
panel2 = new JPanel();
panel3 = new JPanel();
panel1.setLayout( new GridLayout( 1, 3));
panel2.setLayout( new GridLayout( 1, 2));
panel3.setLayout( new GridLayout( 1, 3));

panel1.add( ovalBox );
panel1.add( lineBox );
panel2.add( fillBox );
panel2.add( clearButton );
panel3.add( new JScrollPane( colorList ));
panel3.add( new JScrollPane ( fontList ));
panel3.add( new JScrollPane ( sizeList ) );
Container container = getContentpane();
Container.setLayout( new FlowLayout() );
Container.add( panel1 );
Container.add( panel2 );
Container.add( panel3 );
Container.add( text );

setSize( 350,200 );
setLocation ( 300, 0 );
setVisible ( true );
}
}
private class MouseHandler extends MouseAdapter
{
public void mousePressed( MouseEvent event )
{
topX = event.getX();
topY = event.getY();



}
public void mouseReleased ( MouseEvent event )
{
bottomX = event.getX();
bottomY = event.getY();
width = Math.ads( topX - bottomX );
height = Math.ads( topY - bottomY );

repaint();
}


}

private class ClearButtonHandlera implements ActionListener
{
public void actionPerformed ( ActionEvent event )
{
clear = true;
repaint();



}
}

private class RadioButtonHandler implements ItemListener
{
public void itemStateChanged( ItemEvent event )
{
if ( event.getSource() == ovalBox )
shape = OVAL;
else if ( event.getSource() == lineBox )
shape = LINE;
if ( event.getSource() == rectBox )
shape = RECT;

}


}
private class FillBoxHander implements ItemListener
{
public void itemStateChanged( ItemEvent event )
{
if ( event.getStateChange() == ItemEvent.SELECTED )
filled = true;
else
filled = false;


}

}
public static void main ( String arg[] )
{
Painter2 application = new Painter2 ();
application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );

}
}


修改了3个小时还是不知道怎么修改好.求救一下
...全文
138 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
iny365com 2008-12-23
  • 打赏
  • 举报
回复
原来是圆和线的。但是想要修改成圆和长方形应该怎么修改?
iny365com 2008-12-23
  • 打赏
  • 举报
回复
谢谢了·!
xt2008_vv 2008-12-23
  • 打赏
  • 举报
回复
import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

public class Painter2 extends JFrame {
private int topX, topY, width, fontSize, height, bottomX, bottomY, shape;
private boolean clear, textOn, filled;
private Color drawingColor;
private String font;
private JTextField text;
private JPanel panel1, panel2, panel3;
private JRadioButton ovalBox, rectBox, lineBox;
private ButtonGroup shapeGroup;
private JCheckBox fillBox;
private JComboBox colorList, fontList, sizeList;
private JButton clearButton;
private String colorNames[] = { "Black", "Green", "Blue", "Red", "Cyan" };
private Color colors[] = { Color.black, Color.green, Color.blue, Color.red,
Color.cyan };

private String fontNames[] = { "Serif", "SansSerif", "Monospaced"

};

private String szieNames[] = { "9", "10", "22", "72" };
private int sizes[] = { 9, 10, 22, 72 };
private final int OVAL = 1, LINE = 2, RECT = 3;
private ToolWindow tools;

public Painter2() {
addMouseListener(new MouseHandler());
//似乎每用
drawingColor = Color.black;
shape = OVAL;
font = "Serif";
fontSize = 9;
setSize(300, 300);
setVisible(true);
tools = new ToolWindow();
}

public void paint(Graphics g) {
g.setColor(drawingColor);
if (textOn) {
g.setFont(new Font(font, Font.PLAIN, fontSize));
g.drawString(text.getText(), topX, topY);
textOn = false;
return;

}

if (shape != LINE) {
topX = Math.min(topX, bottomX);
topY = Math.min(topY, bottomY);
}
if (filled && shape != LINE)
switch (shape) {
case OVAL:
g.fillOval(topX, topY, width, height);
break;
case RECT:
g.fillRect(topX, topY, width, height);
break;
}
else
switch (shape) {
case OVAL:
g.drawOval(topX, topY, width, height);
break;
case LINE:
g.drawLine(topX, topY, width, height);
break;
case RECT:
g.drawRect(topX, topY, width, height);
break;
}
if (clear == true) {
g.setColor(Color.white);
g.fillRect(0, 0, getSize().width, getSize().height);
clear = false;
}
}

private class ToolWindow extends JFrame {
public ToolWindow() {
text = new JTextField("Text", 20);
text.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
textOn = true;
repaint();

}

}

);

fontList = new JComboBox(fontNames);
fontList.setMaximumRowCount(3);
fontList.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent event) {
font = fontNames[fontList.getSelectedIndex()];

}

}

);

sizeList = new JComboBox(szieNames);

sizeList.setMaximumRowCount(3);
sizeList.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent event) {
font = fontNames[sizeList.getSelectedIndex()];

}

}

);

colorList = new JComboBox(colorNames);

colorList.setMaximumRowCount(3);
colorList.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent event) {
drawingColor = colors[colorList.getSelectedIndex()];
}
});
clearButton = new JButton("Clear");
clearButton.addActionListener(new ClearButtonHandler());
fillBox = new JCheckBox("filled");
// FillBoxHandler fillHandle = new FillBoxHandler();
fillBox.addItemListener(new FillBoxHander());
ovalBox = new JRadioButton("Oval", true);
lineBox = new JRadioButton("Line", false);
rectBox = new JRadioButton("Rectangle", false);
RadioButtonHandler handler = new RadioButtonHandler();
ovalBox.addItemListener(handler);
lineBox.addItemListener(handler);
rectBox.addItemListener(handler);

shapeGroup = new ButtonGroup();
shapeGroup.add(ovalBox);
shapeGroup.add(lineBox);
shapeGroup.add(rectBox);
panel1 = new JPanel();
panel2 = new JPanel();
panel3 = new JPanel();
panel1.setLayout(new GridLayout(1, 3));
panel2.setLayout(new GridLayout(1, 2));
panel3.setLayout(new GridLayout(1, 3));

panel1.add(ovalBox);
panel1.add(lineBox);
panel2.add(fillBox);
panel2.add(clearButton);
panel3.add(new JScrollPane(colorList));
panel3.add(new JScrollPane(fontList));
panel3.add(new JScrollPane(sizeList));
Container container = getContentPane();
container.setLayout(new FlowLayout());
container.add(panel1);
container.add(panel2);
container.add(panel3);
container.add(text);

setSize(350, 200);
setLocation(300, 0);
setVisible(true);
}
}

private class MouseHandler extends MouseAdapter {
public void mousePressed(MouseEvent event) {
topX = event.getX();
topY = event.getY();

}

public void mouseReleased(MouseEvent event) {
bottomX = event.getX();
bottomY = event.getY();
width = Math.abs(topX - bottomX);
height = Math.abs(topY - bottomY);
repaint();
}

}

private class ClearButtonHandler implements ActionListener {
public void actionPerformed(ActionEvent event) {
clear = true;
repaint();

}
}

private class RadioButtonHandler implements ItemListener {
public void itemStateChanged(ItemEvent event) {
if (event.getSource() == ovalBox)
shape = OVAL;
else if (event.getSource() == lineBox)
shape = LINE;
if (event.getSource() == rectBox)
shape = RECT;

}

}

private class FillBoxHander implements ItemListener {
public void itemStateChanged(ItemEvent event) {
if (event.getStateChange() == ItemEvent.SELECTED)
filled = true;
else
filled = false;

}

}

public static void main(String arg[]) {
Painter2 application = new Painter2();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}
}
iny365com 2008-12-23
  • 打赏
  • 举报
回复
原来我写少了- -||||
我是刚学JAVA的。。。...不好意思
gongfuliang 2008-12-23
  • 打赏
  • 举报
回复
当然有错了,监听的类都没有,别告诉我你自己没有写
iny365com 2008-12-23
  • 打赏
  • 举报
回复
是先手写的.我是想做个图形界面的东西..按下按钮显示图形..
楼上的..还是有地方出错.
gongfuliang 2008-12-23
  • 打赏
  • 举报
回复
手写的吗? 那么多错误,给你改了一下,你是说NullPointerException吗?

还是什么问题,发帖时要讲清楚

import java.awt.Color;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;

import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextField;

public class Painter2 extends JFrame {
private int topX, topY, width, fontSize, height, bottomX, bottomY, shape;
private boolean clear, textOn, filled;
private Color drawingColor;
private String font;
private JTextField text;
private JPanel panel1, panel2, panel3;
private JRadioButton ovalBox, rectBox, lineBox;
private ButtonGroup shapeGroup;
private JCheckBox fillBox;
private JComboBox colorList, fontList, sizeList;
private JButton clearButton;
private String colorNames[] = { "Black", "Green", "Blue", "Red", "Cyan" };
private Color colors[] = { Color.black, Color.green, Color.blue, Color.red,
Color.cyan };

private String fontNames[] = { "Serif", "SansSerif", "Monospaced"

};

private String szieNames[] = { "9", "10", "22", "72" };
private int sizes[] = { 9, 10, 22, 72 };
private final int OVAL = 1, LINE = 2, RECT = 3;
private ToolWindow tools;

public Painter2() {
addMouseListener(new MouseHandler());
drawingColor = Color.black;
shape = OVAL;
font = "Serif";
fontSize = 9;
setSize(300, 300);
setVisible(true);
tools = new ToolWindow();
}

public void paint(Graphics g) {
g.setColor(drawingColor);
if (textOn) {
g.setFont(new Font(font, Font.PLAIN, fontSize));
g.drawString(text.getText(), topX, topY);
textOn = false;
return;

}
if (shape != LINE) {
topX = Math.min(topX, bottomX);
topY = Math.min(topY, bottomY);
}
if (filled && shape != LINE)
switch (shape) {
case OVAL:
g.fillOval(topX, topY, width, height);
break;
case RECT:
g.fillRect(topX, topY, width, height);
break;
}
else
switch (shape) {
case OVAL:
g.drawOval(topX, topY, width, height);
break;
case LINE:
g.drawLine(topX, topY, width, height);
break;
case RECT:
g.drawRect(topX, topY, width, height);
break;
}
if (clear == true) {
g.setColor(Color.white);
g.fillRect(0, 0, getSize().width, getSize().height);
clear = false;
}
}

private class ToolWindow extends JFrame {
public ToolWindow() {
text = new JTextField("Text", 20);
text.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
textOn = true;
repaint();

}

}

);

fontList = new JComboBox(fontNames);
fontList.setMaximumRowCount(3);
fontList.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent event) {
font = fontNames[fontList.getSelectedIndex()];

}

}

);

sizeList = new JComboBox(szieNames);

sizeList.setMaximumRowCount(3);
sizeList.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent event) {
font = fontNames[sizeList.getSelectedIndex()];

}

}

);

colorList = new JComboBox(colorNames);

colorList.setMaximumRowCount(3);
colorList.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent event) {
drawingColor = colors[colorList.getSelectedIndex()];
}
});
clearButton = new JButton("Clear");
clearButton.addActionListener(new ClearButtonHandler());
fillBox = new JCheckBox("filled");
FillBoxHandler fillHandle = new FillBoxHandler();
fillBox.addItemListener(fillHandle);
ovalBox = new JRadioButton("Oval", true);
lineBox = new JRadioButton("Line", false);
rectBox = new JRadioButton("Rectangle", false);
RadioButtonHandler handler = new RadioButtonHandler();
ovalBox.addItemListener(handler);
lineBox.addItemListener(handler);
rectBox.addItemListener(handler);

shapeGroup = new ButtonGroup();
shapeGroup.add(ovalBox);
shapeGroup.add(lineBox);
shapeGroup.add(rectBox);
panel1 = new JPanel();
panel2 = new JPanel();
panel3 = new JPanel();
panel1.setLayout(new GridLayout(1, 3));
panel2.setLayout(new GridLayout(1, 2));
panel3.setLayout(new GridLayout(1, 3));

panel1.add(ovalBox);
panel1.add(lineBox);
panel2.add(fillBox);
panel2.add(clearButton);
panel3.add(new JScrollPane(colorList));
panel3.add(new JScrollPane(fontList));
panel3.add(new JScrollPane(sizeList));
Container container = getContentPane();
container.setLayout(new FlowLayout());
container.add(panel1);
container.add(panel2);
container.add(panel3);
container.add(text);

setSize(350, 200);
setLocation(300, 0);
setVisible(true);
}
}

private class MouseHandler extends MouseAdapter {
public void mousePressed(MouseEvent event) {
topX = event.getX();
topY = event.getY();

}

public void mouseReleased(MouseEvent event) {
bottomX = event.getX();
bottomY = event.getY();
width = Math.abs(topX - bottomX);
height = Math.abs(topY - bottomY);
repaint();
}

}

private class ClearButtonHandlera implements ActionListener {
public void actionPerformed(ActionEvent event) {
clear = true;
repaint();

}
}

private class RadioButtonHandler implements ItemListener {
public void itemStateChanged(ItemEvent event) {
if (event.getSource() == ovalBox)
shape = OVAL;
else if (event.getSource() == lineBox)
shape = LINE;
if (event.getSource() == rectBox)
shape = RECT;

}

}

private class FillBoxHander implements ItemListener {
public void itemStateChanged(ItemEvent event) {
if (event.getStateChange() == ItemEvent.SELECTED)
filled = true;
else
filled = false;

}

}

public static void main(String arg[]) {
Painter2 application = new Painter2();
application.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}
}
renmms 2008-12-23
  • 打赏
  • 举报
回复
你有什么问题?

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧