图形中的按钮
Button in Graphic
我的最后一个问题可能太长了所以我决定改一下
我正在寻找制作按钮或侦听器的方法,以便在按下后显示此图形我刚刚开始编程,所以我不知道该怎么做。
任何帮助将不胜感激:)
import java.applet.Applet;
import java.awt.*;
//The applet code
public class Main extends Applet {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
*
*/
public void init() {
setSize(2000,500);
}
public void paint(Graphics g) {
int A = 0;
//Hat
g.setColor(Color.blue);
int m[] = {A+170,A+120,A+220};
int hat[] = {0,35,35};
int pts = 3;
g.fillPolygon(m, hat, pts);
//head
g.setColor(Color.gray);
g.fillRoundRect(123,35,95,95,20,20);
//Eye one
g.setColor(Color.blue);
g.fillOval(130,50,25,25);
//Eye (inside) one
g.setColor(Color.black);
g.fillOval(137,57,10,10);
//Eyelid right
g.setColor(Color.cyan);
g.fillArc(130,50,26,15,-15,220);
//Eye two
g.setColor(Color.blue);
g.fillOval(185,50,25,25);
//Eye (inside)two
g.setColor(Color.black);
g.fillOval(192,57,10,10);
//Eyelid left
g.setColor(Color.cyan);
g.fillArc(184,50,26,15,-15,220);
//Nose
g.setColor(Color.green);
g.fillRoundRect(165,70,10,25,20,20);
//Mouth
g.setColor(Color.red);
g.fillArc(140,90,60,40,20,-220);
//Mouth (inside fill out)
g.setColor(Color.white);
g.fillArc(142,99,55,26,20,-220);
//Mouth (inside2 middle1)
g.setColor(Color.red);
g.drawArc(142,97,55,20,20,-220);
//Mouth (inside3 middle2)
g.setColor(Color.red);
g.drawArc(142,98,55,20,20,-220);
//Neck
g.setColor(Color.gray);
g.fillRect(155,130,30,20);
//Body
g.setColor(Color.gray);
g.fillRoundRect(100,151,145,70,20,20);
//Body 2
g.setColor(Color.gray);
g.fillRoundRect(120,185,100,100,20,20);
//Chest 1 (left)
g.setColor(Color.black);
g.fillRoundRect(107,157,60,50,20,20);
//Chest 2 (right)
g.setColor(Color.black);
g.fillRoundRect(178,157,60,50,20,20);
//Abs 1 (left)
g.setColor(Color.black);
g.fillRoundRect(140,209,30,22,20,20);
//Abs 2 (left)
g.setColor(Color.black);
g.fillRoundRect(140,233,30,22,20,20);
//Abs 3 (left)
g.setColor(Color.black);
g.fillRoundRect(140,257,30,22,20,20);
//Abs 1 (right)
g.setColor(Color.black);
g.fillRoundRect(174,209,30,22,20,20);
//Abs 2 (right)
g.setColor(Color.black);
g.fillRoundRect(174,233,30,22,20,20);
//Abs 3 (right)
g.setColor(Color.black);
g.fillRoundRect(174,257,30,22,20,20);
//Arm 1
g.setColor(Color.gray);
g.fillRoundRect(45,151,50,130,20,20);
//Hand 1
g.setColor(Color.black);
g.fillRoundRect(45,250,50,30,20,20);
//Gun top hole
g.setColor(Color.red);
g.fillOval(55,260,30,30);
//Gun 1
g.setColor(Color.blue);
g.fillRoundRect(60,270,20,60,20,20);
//Gun end
g.setColor(Color.black);
g.fillRect(60,320,20,10);
//Fire
g.setColor(Color.red);
g.fillOval(63,330,14,40);
//Arm 2
g.setColor(Color.gray);
g.fillRoundRect(250,151,50,130,20,20);
//Hand 2
g.setColor(Color.black);
g.fillRoundRect(250,250,50,30,20,20);
//Saw top hole
g.setColor(Color.red);
g.fillOval(260,260,30,30);
//Saw stick
g.setColor(Color.black);
g.fillRoundRect(270,270,10,60,20,20);
//Saw teeth 1
g.setColor(Color.gray);
g.fillRect(256,311,38,38);
//Saw teeth 2
g.setColor(Color.red);
int a[] = {A+250,A+275,A+300,A+275};
int saw[] = {330,305,330,355};
int fourPoints = 4;
g.fillPolygon(a, saw, fourPoints);
//Saw middle wheel
g.setColor(Color.black);
g.fillOval(257,312,37,37);
//Saw middle wheel end
g.setColor(Color.gray);
g.fillOval(267,322,16,16);
//Pants
g.setColor(Color.black);
g.fillRect(120,284,101,50);
//Leg 1
g.setColor(Color.gray);
g.fillRoundRect(115,335,50,150,20,20);
//Leg 2
g.setColor(Color.gray);
g.fillRoundRect(181,335,50,150,20,20);
//feet1
g.setColor(Color.black);
g.fillRoundRect(115,460,50,30,20,20);
//feet2
g.setColor(Color.black);
g.fillRoundRect(181,460,50,30,20,20);
}
}
使用内置的 jframe class。
您可以 set.contentpane(visible, false) 将图形放入内容窗格。
然后使用 jbutton 将内容窗格设置为在单击时可见
至少从使用 Swing 开始 API。我还质疑使用小程序的必要性,并建议使用基于 window 的 类,它们更容易处理。
首先创建一个从类似 JPanel
扩展的自定义组件,重写它的 paintComponent
方法并在其中放置自定义绘画。
创建另一个 JPanel
并为其分配一个 BorderLayout
并将其添加到您的主容器中,这将充当 "robot pane"
的占位符
创建一个 JButton
,使用 BorderLayout
,将 "content pane" 和按钮都放在顶层容器中(在您的例子中是小程序)
将 ActionListener
附加到按钮,当它被触发时,创建 "robot pane" 的新实例并将其放置在 "content pane"
中
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JPanel;
public class Main extends JApplet {
private JPanel content;
public void init() {
setLayout(new BorderLayout());
content = new JPanel(new BorderLayout()) {
@Override
public Dimension getPreferredSize() {
return new Dimension(500, 2000);
}
};
add(content);
JButton btn = new JButton("Show me the robot");
add(btn, BorderLayout.SOUTH);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
btn.setEnabled(false);
RobotPane botPane = new RobotPane();
content.add(botPane);
revalidate();
repaint();
}
});
}
public class RobotPane extends JPanel {
@Override
public Dimension getPreferredSize() {
return new Dimension(500, 2000);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
int A = 0;
//Hat
g.setColor(Color.blue);
int m[] = {A + 170, A + 120, A + 220};
int hat[] = {0, 35, 35};
int pts = 3;
g.fillPolygon(m, hat, pts);
//head
g.setColor(Color.gray);
g.fillRoundRect(123, 35, 95, 95, 20, 20);
//Eye one
g.setColor(Color.blue);
g.fillOval(130, 50, 25, 25);
//Eye (inside) one
g.setColor(Color.black);
g.fillOval(137, 57, 10, 10);
//Eyelid right
g.setColor(Color.cyan);
g.fillArc(130, 50, 26, 15, -15, 220);
//Eye two
g.setColor(Color.blue);
g.fillOval(185, 50, 25, 25);
//Eye (inside)two
g.setColor(Color.black);
g.fillOval(192, 57, 10, 10);
//Eyelid left
g.setColor(Color.cyan);
g.fillArc(184, 50, 26, 15, -15, 220);
//Nose
g.setColor(Color.green);
g.fillRoundRect(165, 70, 10, 25, 20, 20);
//Mouth
g.setColor(Color.red);
g.fillArc(140, 90, 60, 40, 20, -220);
//Mouth (inside fill out)
g.setColor(Color.white);
g.fillArc(142, 99, 55, 26, 20, -220);
//Mouth (inside2 middle1)
g.setColor(Color.red);
g.drawArc(142, 97, 55, 20, 20, -220);
//Mouth (inside3 middle2)
g.setColor(Color.red);
g.drawArc(142, 98, 55, 20, 20, -220);
//Neck
g.setColor(Color.gray);
g.fillRect(155, 130, 30, 20);
//Body
g.setColor(Color.gray);
g.fillRoundRect(100, 151, 145, 70, 20, 20);
//Body 2
g.setColor(Color.gray);
g.fillRoundRect(120, 185, 100, 100, 20, 20);
//Chest 1 (left)
g.setColor(Color.black);
g.fillRoundRect(107, 157, 60, 50, 20, 20);
//Chest 2 (right)
g.setColor(Color.black);
g.fillRoundRect(178, 157, 60, 50, 20, 20);
//Abs 1 (left)
g.setColor(Color.black);
g.fillRoundRect(140, 209, 30, 22, 20, 20);
//Abs 2 (left)
g.setColor(Color.black);
g.fillRoundRect(140, 233, 30, 22, 20, 20);
//Abs 3 (left)
g.setColor(Color.black);
g.fillRoundRect(140, 257, 30, 22, 20, 20);
//Abs 1 (right)
g.setColor(Color.black);
g.fillRoundRect(174, 209, 30, 22, 20, 20);
//Abs 2 (right)
g.setColor(Color.black);
g.fillRoundRect(174, 233, 30, 22, 20, 20);
//Abs 3 (right)
g.setColor(Color.black);
g.fillRoundRect(174, 257, 30, 22, 20, 20);
//Arm 1
g.setColor(Color.gray);
g.fillRoundRect(45, 151, 50, 130, 20, 20);
//Hand 1
g.setColor(Color.black);
g.fillRoundRect(45, 250, 50, 30, 20, 20);
//Gun top hole
g.setColor(Color.red);
g.fillOval(55, 260, 30, 30);
//Gun 1
g.setColor(Color.blue);
g.fillRoundRect(60, 270, 20, 60, 20, 20);
//Gun end
g.setColor(Color.black);
g.fillRect(60, 320, 20, 10);
//Fire
g.setColor(Color.red);
g.fillOval(63, 330, 14, 40);
//Arm 2
g.setColor(Color.gray);
g.fillRoundRect(250, 151, 50, 130, 20, 20);
//Hand 2
g.setColor(Color.black);
g.fillRoundRect(250, 250, 50, 30, 20, 20);
//Saw top hole
g.setColor(Color.red);
g.fillOval(260, 260, 30, 30);
//Saw stick
g.setColor(Color.black);
g.fillRoundRect(270, 270, 10, 60, 20, 20);
//Saw teeth 1
g.setColor(Color.gray);
g.fillRect(256, 311, 38, 38);
//Saw teeth 2
g.setColor(Color.red);
int a[] = {A + 250, A + 275, A + 300, A + 275};
int saw[] = {330, 305, 330, 355};
int fourPoints = 4;
g.fillPolygon(a, saw, fourPoints);
//Saw middle wheel
g.setColor(Color.black);
g.fillOval(257, 312, 37, 37);
//Saw middle wheel end
g.setColor(Color.gray);
g.fillOval(267, 322, 16, 16);
//Pants
g.setColor(Color.black);
g.fillRect(120, 284, 101, 50);
//Leg 1
g.setColor(Color.gray);
g.fillRoundRect(115, 335, 50, 150, 20, 20);
//Leg 2
g.setColor(Color.gray);
g.fillRoundRect(181, 335, 50, 150, 20, 20);
//feet1
g.setColor(Color.black);
g.fillRoundRect(115, 460, 50, 30, 20, 20);
//feet2
g.setColor(Color.black);
g.fillRoundRect(181, 460, 50, 30, 20, 20);
}
}
}
见
- Creating a GUI With JFC/Swing
- Laying Out Components Within a Container
- How to Use Buttons, Check Boxes, and Radio Buttons
- How to Write an Action Listeners
- Performing Custom Painting
了解更多详情
为了得到你想要的东西,你需要一个按钮和一个监听器。您将需要一个 JButton
和一个 ActionListener
。下面您将看到我编写的一些代码来创建使用 JButtons
和 ActionListeners
的二十一点游戏。 ActionListeners
将链接到您的 JButtons
,以便在单击按钮时,ActionListener
执行您想要完成的任何操作。
JButton Quit = new JButton("Quit");
Quit.addActionListener(new QuitListener());
CenterSub.add(Quit, BorderLayout.SOUTH);
让我们从代码段的第一行开始。我在等号的右侧声明了一个名为 Quit
的 JButton
。在左侧,我完成了初始化,并给出了要在实际按钮上显示的 JButton
文本。在这种情况下,一旦程序为 运行,按钮将显示为 "Quit"
。第二行将 ActionListener
添加到 JButton
以便单击按钮后,将执行 ActionListener
中的代码。在第二行的括号中,我将新的 ActionListener
称为 QuitListener
。当我编写 Listener 代码时,这将是它的名称。最后一行显示了我在 JPanel
上添加按钮的位置。我调用了 JPanel
名称 (CenterSub
),然后传入按钮的名称以及我希望它位于的位置作为参数。
private class QuitListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
此代码段是我在第一个代码段中添加到 JButton
的 QuitListener
的定义。 QuitListener
实现了接口 ActionListener
,它允许我定义 actionPerformed(ActionEvent e)
方法来做我想做的事。 ActionEvent
是玩家点击 "Quit"
按钮。单击按钮时,方法 actionPerformed
将执行并调用 System.exit(0)
终止程序,从而允许玩家退出游戏。
因此,总结一下,实现您想要的效果,创建一个 JButton
、一个 ActionListener
并在 ActionListener
定义中为 actionEvent
方法, 调用你定义的 paint 方法。如需进一步帮助,我强烈建议您查看 Jbutton API 以及您可能需要的任何其他 API。
这个JButton
API.
这是我第一次回答问题,所以我希望这能帮助您了解您的需求。
我的最后一个问题可能太长了所以我决定改一下 我正在寻找制作按钮或侦听器的方法,以便在按下后显示此图形我刚刚开始编程,所以我不知道该怎么做。 任何帮助将不胜感激:)
import java.applet.Applet;
import java.awt.*;
//The applet code
public class Main extends Applet {
/**
*
*/
private static final long serialVersionUID = 1L;
/**
*
*/
public void init() {
setSize(2000,500);
}
public void paint(Graphics g) {
int A = 0;
//Hat
g.setColor(Color.blue);
int m[] = {A+170,A+120,A+220};
int hat[] = {0,35,35};
int pts = 3;
g.fillPolygon(m, hat, pts);
//head
g.setColor(Color.gray);
g.fillRoundRect(123,35,95,95,20,20);
//Eye one
g.setColor(Color.blue);
g.fillOval(130,50,25,25);
//Eye (inside) one
g.setColor(Color.black);
g.fillOval(137,57,10,10);
//Eyelid right
g.setColor(Color.cyan);
g.fillArc(130,50,26,15,-15,220);
//Eye two
g.setColor(Color.blue);
g.fillOval(185,50,25,25);
//Eye (inside)two
g.setColor(Color.black);
g.fillOval(192,57,10,10);
//Eyelid left
g.setColor(Color.cyan);
g.fillArc(184,50,26,15,-15,220);
//Nose
g.setColor(Color.green);
g.fillRoundRect(165,70,10,25,20,20);
//Mouth
g.setColor(Color.red);
g.fillArc(140,90,60,40,20,-220);
//Mouth (inside fill out)
g.setColor(Color.white);
g.fillArc(142,99,55,26,20,-220);
//Mouth (inside2 middle1)
g.setColor(Color.red);
g.drawArc(142,97,55,20,20,-220);
//Mouth (inside3 middle2)
g.setColor(Color.red);
g.drawArc(142,98,55,20,20,-220);
//Neck
g.setColor(Color.gray);
g.fillRect(155,130,30,20);
//Body
g.setColor(Color.gray);
g.fillRoundRect(100,151,145,70,20,20);
//Body 2
g.setColor(Color.gray);
g.fillRoundRect(120,185,100,100,20,20);
//Chest 1 (left)
g.setColor(Color.black);
g.fillRoundRect(107,157,60,50,20,20);
//Chest 2 (right)
g.setColor(Color.black);
g.fillRoundRect(178,157,60,50,20,20);
//Abs 1 (left)
g.setColor(Color.black);
g.fillRoundRect(140,209,30,22,20,20);
//Abs 2 (left)
g.setColor(Color.black);
g.fillRoundRect(140,233,30,22,20,20);
//Abs 3 (left)
g.setColor(Color.black);
g.fillRoundRect(140,257,30,22,20,20);
//Abs 1 (right)
g.setColor(Color.black);
g.fillRoundRect(174,209,30,22,20,20);
//Abs 2 (right)
g.setColor(Color.black);
g.fillRoundRect(174,233,30,22,20,20);
//Abs 3 (right)
g.setColor(Color.black);
g.fillRoundRect(174,257,30,22,20,20);
//Arm 1
g.setColor(Color.gray);
g.fillRoundRect(45,151,50,130,20,20);
//Hand 1
g.setColor(Color.black);
g.fillRoundRect(45,250,50,30,20,20);
//Gun top hole
g.setColor(Color.red);
g.fillOval(55,260,30,30);
//Gun 1
g.setColor(Color.blue);
g.fillRoundRect(60,270,20,60,20,20);
//Gun end
g.setColor(Color.black);
g.fillRect(60,320,20,10);
//Fire
g.setColor(Color.red);
g.fillOval(63,330,14,40);
//Arm 2
g.setColor(Color.gray);
g.fillRoundRect(250,151,50,130,20,20);
//Hand 2
g.setColor(Color.black);
g.fillRoundRect(250,250,50,30,20,20);
//Saw top hole
g.setColor(Color.red);
g.fillOval(260,260,30,30);
//Saw stick
g.setColor(Color.black);
g.fillRoundRect(270,270,10,60,20,20);
//Saw teeth 1
g.setColor(Color.gray);
g.fillRect(256,311,38,38);
//Saw teeth 2
g.setColor(Color.red);
int a[] = {A+250,A+275,A+300,A+275};
int saw[] = {330,305,330,355};
int fourPoints = 4;
g.fillPolygon(a, saw, fourPoints);
//Saw middle wheel
g.setColor(Color.black);
g.fillOval(257,312,37,37);
//Saw middle wheel end
g.setColor(Color.gray);
g.fillOval(267,322,16,16);
//Pants
g.setColor(Color.black);
g.fillRect(120,284,101,50);
//Leg 1
g.setColor(Color.gray);
g.fillRoundRect(115,335,50,150,20,20);
//Leg 2
g.setColor(Color.gray);
g.fillRoundRect(181,335,50,150,20,20);
//feet1
g.setColor(Color.black);
g.fillRoundRect(115,460,50,30,20,20);
//feet2
g.setColor(Color.black);
g.fillRoundRect(181,460,50,30,20,20);
}
}
使用内置的 jframe class。 您可以 set.contentpane(visible, false) 将图形放入内容窗格。 然后使用 jbutton 将内容窗格设置为在单击时可见
至少从使用 Swing 开始 API。我还质疑使用小程序的必要性,并建议使用基于 window 的 类,它们更容易处理。
首先创建一个从类似 JPanel
扩展的自定义组件,重写它的 paintComponent
方法并在其中放置自定义绘画。
创建另一个 JPanel
并为其分配一个 BorderLayout
并将其添加到您的主容器中,这将充当 "robot pane"
创建一个 JButton
,使用 BorderLayout
,将 "content pane" 和按钮都放在顶层容器中(在您的例子中是小程序)
将 ActionListener
附加到按钮,当它被触发时,创建 "robot pane" 的新实例并将其放置在 "content pane"
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JPanel;
public class Main extends JApplet {
private JPanel content;
public void init() {
setLayout(new BorderLayout());
content = new JPanel(new BorderLayout()) {
@Override
public Dimension getPreferredSize() {
return new Dimension(500, 2000);
}
};
add(content);
JButton btn = new JButton("Show me the robot");
add(btn, BorderLayout.SOUTH);
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
btn.setEnabled(false);
RobotPane botPane = new RobotPane();
content.add(botPane);
revalidate();
repaint();
}
});
}
public class RobotPane extends JPanel {
@Override
public Dimension getPreferredSize() {
return new Dimension(500, 2000);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
int A = 0;
//Hat
g.setColor(Color.blue);
int m[] = {A + 170, A + 120, A + 220};
int hat[] = {0, 35, 35};
int pts = 3;
g.fillPolygon(m, hat, pts);
//head
g.setColor(Color.gray);
g.fillRoundRect(123, 35, 95, 95, 20, 20);
//Eye one
g.setColor(Color.blue);
g.fillOval(130, 50, 25, 25);
//Eye (inside) one
g.setColor(Color.black);
g.fillOval(137, 57, 10, 10);
//Eyelid right
g.setColor(Color.cyan);
g.fillArc(130, 50, 26, 15, -15, 220);
//Eye two
g.setColor(Color.blue);
g.fillOval(185, 50, 25, 25);
//Eye (inside)two
g.setColor(Color.black);
g.fillOval(192, 57, 10, 10);
//Eyelid left
g.setColor(Color.cyan);
g.fillArc(184, 50, 26, 15, -15, 220);
//Nose
g.setColor(Color.green);
g.fillRoundRect(165, 70, 10, 25, 20, 20);
//Mouth
g.setColor(Color.red);
g.fillArc(140, 90, 60, 40, 20, -220);
//Mouth (inside fill out)
g.setColor(Color.white);
g.fillArc(142, 99, 55, 26, 20, -220);
//Mouth (inside2 middle1)
g.setColor(Color.red);
g.drawArc(142, 97, 55, 20, 20, -220);
//Mouth (inside3 middle2)
g.setColor(Color.red);
g.drawArc(142, 98, 55, 20, 20, -220);
//Neck
g.setColor(Color.gray);
g.fillRect(155, 130, 30, 20);
//Body
g.setColor(Color.gray);
g.fillRoundRect(100, 151, 145, 70, 20, 20);
//Body 2
g.setColor(Color.gray);
g.fillRoundRect(120, 185, 100, 100, 20, 20);
//Chest 1 (left)
g.setColor(Color.black);
g.fillRoundRect(107, 157, 60, 50, 20, 20);
//Chest 2 (right)
g.setColor(Color.black);
g.fillRoundRect(178, 157, 60, 50, 20, 20);
//Abs 1 (left)
g.setColor(Color.black);
g.fillRoundRect(140, 209, 30, 22, 20, 20);
//Abs 2 (left)
g.setColor(Color.black);
g.fillRoundRect(140, 233, 30, 22, 20, 20);
//Abs 3 (left)
g.setColor(Color.black);
g.fillRoundRect(140, 257, 30, 22, 20, 20);
//Abs 1 (right)
g.setColor(Color.black);
g.fillRoundRect(174, 209, 30, 22, 20, 20);
//Abs 2 (right)
g.setColor(Color.black);
g.fillRoundRect(174, 233, 30, 22, 20, 20);
//Abs 3 (right)
g.setColor(Color.black);
g.fillRoundRect(174, 257, 30, 22, 20, 20);
//Arm 1
g.setColor(Color.gray);
g.fillRoundRect(45, 151, 50, 130, 20, 20);
//Hand 1
g.setColor(Color.black);
g.fillRoundRect(45, 250, 50, 30, 20, 20);
//Gun top hole
g.setColor(Color.red);
g.fillOval(55, 260, 30, 30);
//Gun 1
g.setColor(Color.blue);
g.fillRoundRect(60, 270, 20, 60, 20, 20);
//Gun end
g.setColor(Color.black);
g.fillRect(60, 320, 20, 10);
//Fire
g.setColor(Color.red);
g.fillOval(63, 330, 14, 40);
//Arm 2
g.setColor(Color.gray);
g.fillRoundRect(250, 151, 50, 130, 20, 20);
//Hand 2
g.setColor(Color.black);
g.fillRoundRect(250, 250, 50, 30, 20, 20);
//Saw top hole
g.setColor(Color.red);
g.fillOval(260, 260, 30, 30);
//Saw stick
g.setColor(Color.black);
g.fillRoundRect(270, 270, 10, 60, 20, 20);
//Saw teeth 1
g.setColor(Color.gray);
g.fillRect(256, 311, 38, 38);
//Saw teeth 2
g.setColor(Color.red);
int a[] = {A + 250, A + 275, A + 300, A + 275};
int saw[] = {330, 305, 330, 355};
int fourPoints = 4;
g.fillPolygon(a, saw, fourPoints);
//Saw middle wheel
g.setColor(Color.black);
g.fillOval(257, 312, 37, 37);
//Saw middle wheel end
g.setColor(Color.gray);
g.fillOval(267, 322, 16, 16);
//Pants
g.setColor(Color.black);
g.fillRect(120, 284, 101, 50);
//Leg 1
g.setColor(Color.gray);
g.fillRoundRect(115, 335, 50, 150, 20, 20);
//Leg 2
g.setColor(Color.gray);
g.fillRoundRect(181, 335, 50, 150, 20, 20);
//feet1
g.setColor(Color.black);
g.fillRoundRect(115, 460, 50, 30, 20, 20);
//feet2
g.setColor(Color.black);
g.fillRoundRect(181, 460, 50, 30, 20, 20);
}
}
}
见
- Creating a GUI With JFC/Swing
- Laying Out Components Within a Container
- How to Use Buttons, Check Boxes, and Radio Buttons
- How to Write an Action Listeners
- Performing Custom Painting
了解更多详情
为了得到你想要的东西,你需要一个按钮和一个监听器。您将需要一个 JButton
和一个 ActionListener
。下面您将看到我编写的一些代码来创建使用 JButtons
和 ActionListeners
的二十一点游戏。 ActionListeners
将链接到您的 JButtons
,以便在单击按钮时,ActionListener
执行您想要完成的任何操作。
JButton Quit = new JButton("Quit");
Quit.addActionListener(new QuitListener());
CenterSub.add(Quit, BorderLayout.SOUTH);
让我们从代码段的第一行开始。我在等号的右侧声明了一个名为 Quit
的 JButton
。在左侧,我完成了初始化,并给出了要在实际按钮上显示的 JButton
文本。在这种情况下,一旦程序为 运行,按钮将显示为 "Quit"
。第二行将 ActionListener
添加到 JButton
以便单击按钮后,将执行 ActionListener
中的代码。在第二行的括号中,我将新的 ActionListener
称为 QuitListener
。当我编写 Listener 代码时,这将是它的名称。最后一行显示了我在 JPanel
上添加按钮的位置。我调用了 JPanel
名称 (CenterSub
),然后传入按钮的名称以及我希望它位于的位置作为参数。
private class QuitListener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
此代码段是我在第一个代码段中添加到 JButton
的 QuitListener
的定义。 QuitListener
实现了接口 ActionListener
,它允许我定义 actionPerformed(ActionEvent e)
方法来做我想做的事。 ActionEvent
是玩家点击 "Quit"
按钮。单击按钮时,方法 actionPerformed
将执行并调用 System.exit(0)
终止程序,从而允许玩家退出游戏。
因此,总结一下,实现您想要的效果,创建一个 JButton
、一个 ActionListener
并在 ActionListener
定义中为 actionEvent
方法, 调用你定义的 paint 方法。如需进一步帮助,我强烈建议您查看 Jbutton API 以及您可能需要的任何其他 API。
这个JButton
API.
这是我第一次回答问题,所以我希望这能帮助您了解您的需求。