Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何用Java制作按钮绘画?_Java_Swing_Paint_Actionlistener_Repaint - Fatal编程技术网

如何用Java制作按钮绘画?

如何用Java制作按钮绘画?,java,swing,paint,actionlistener,repaint,Java,Swing,Paint,Actionlistener,Repaint,编辑: 当我启动程序时,棋盘会按预期的方式画出来,按钮也会工作。但是我只希望在按下按钮时绘制棋盘,而不是在运行程序时绘制。我该怎么做 import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Male extends JFrame implements ActionListener { JFrame frame; JPanel DrawPanel; JButton b

编辑: 当我启动程序时,棋盘会按预期的方式画出来,按钮也会工作。但是我只希望在按下按钮时绘制棋盘,而不是在运行程序时绘制。我该怎么做

import javax.swing.*;        
import java.awt.*;
import java.awt.event.*;

public class Male extends JFrame implements ActionListener {      
JFrame frame;
JPanel DrawPanel;
JButton button;


public void Male() {
frame = new JFrame();
button = new JButton("MALE");
button.addActionListener(this);

MyDrawPanel DrawPanel = new MyDrawPanel();


frame.getContentPane().add(BorderLayout.SOUTH, button);
frame.getContentPane().add(BorderLayout.CENTER, DrawPanel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
frame.setSize(500,500);
frame.setVisible(true);

}


public static void main(String[] args) {
  Male gui = new Male();
  gui.Male();

}
public void actionPerformed(ActionEvent event) {
    frame.repaint();

}
}

class MyDrawPanel extends JPanel {    

public void paintComponent(Graphics g) {
  g.setColor(Color.BLACK);
  setBackground(Color.WHITE);
  int x=0;
  int y=0;

  for (int i=0; i<32; i++){
     g.fillRect(x, y, 50, 50);
     x = x + 100;

     if (x == 400){
     x = 50;
     y = y + 50;
     }else if (x == 450){
     x = 0;
     y = y + 50;
  }
  }

}   
}
import javax.swing.*;
导入java.awt.*;
导入java.awt.event.*;
公共类Male扩展JFrame实现ActionListener{
JFrame框架;
JPanel绘图面板;
按钮;
公共空间(男){
frame=新的JFrame();
按钮=新的JButton(“男性”);
addActionListener(这个);
MyDrawPanel DrawPanel=新建MyDrawPanel();
frame.getContentPane().add(BorderLayout.SOUTH,按钮);
frame.getContentPane().add(BorderLayout.CENTER,DrawPanel);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
框架。设置尺寸(500500);
frame.setVisible(true);
}
公共静态void main(字符串[]args){
男性gui=新男性();
gui.Male();
}
已执行的公共无效操作(操作事件){
frame.repaint();
}
}
类MyDrawPanel扩展了JPanel{
公共组件(图形g){
g、 设置颜色(颜色为黑色);
挫折地面(颜色:白色);
int x=0;
int y=0;

对于(int i=0;i我的方法是将绘制电路板的位放在if语句中,并生成一个布尔变量,当单击按钮时该变量设置为true

例如:

 if(hasBeenPressed){
     // add drawing code here
 }

我对java中的按钮不太熟悉,因此我无法真正告诉您如何完全设置它,但我希望这至少能帮助您完成您想做的事情。

“以下是需要填充空格的代码:”所以,开始吧。当你可以问一个特定的问题时,请与我们联系。我不是要求任何人简单地为我填空。我想知道我是否应该制作JButton,它将在类MaleFrame中绘制,我应该把Main方法放在哪里,因为没有它eclipse将无法编译。我会把它放在类Male中,但在那里没有空间,所以我可以把它放在哪里?好的“如何在Java中绘制按钮?”在
actionPerformed(ActionEvent)
上,调用自定义组件上的
repaint()
。因此我更新了代码,现在有一个更具体的问题。有帮助吗?请查看