java gui 事件监听的例子 感觉不对 请大家帮忙看看
就是用eclipse点击run以后,直接出现gradient的内容,而D点击按钮以后没有变化importjavax.swing.*;importjava.awt.*;im...
就是用eclipse点击run以后,直接出现gradient的内容,而D点击按钮以后没有变化
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SimpleGui3C extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
JFrame frame;
public static void main(String[] args) {
// TODO Auto-generated method stub
SimpleGui3C gui = new SimpleGui3C();
gui.go();
}
public void go() {
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton("change colours");
button.addActionListener(this);
MyDrawPanel drawPanel = new MyDrawPanel();
frame.getContentPane().add(BorderLayout.SOUTH, button);
frame.getContentPane().add(BorderLayout.CENTER, drawPanel);
frame.setSize(300, 300);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent event) {
frame.repaint();
}
}
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;
public class MyDrawPanel extends JPanel {
private static final long serialVersionUID = 1L;
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
GradientPaint gradient = new GradientPaint(50, 50, Color.blue, 150,
150, Color.orange);
g2d.setPaint(gradient);
g2d.fillOval(70, 70, 100, 100);
}
}
2楼的这位大哥 我明白你的意思 但是刚开始main里面 MyDrawPanel drawPanel = new MyDrawPanel();
只是新建了一个MyDrawpanel 的实力而已,没有运行 其中paintComponent()这个方法 ,那为什么刚开始就运行了这个方法里面的画图 展开
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SimpleGui3C extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
JFrame frame;
public static void main(String[] args) {
// TODO Auto-generated method stub
SimpleGui3C gui = new SimpleGui3C();
gui.go();
}
public void go() {
frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JButton button = new JButton("change colours");
button.addActionListener(this);
MyDrawPanel drawPanel = new MyDrawPanel();
frame.getContentPane().add(BorderLayout.SOUTH, button);
frame.getContentPane().add(BorderLayout.CENTER, drawPanel);
frame.setSize(300, 300);
frame.setVisible(true);
}
public void actionPerformed(ActionEvent event) {
frame.repaint();
}
}
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import javax.swing.JPanel;
public class MyDrawPanel extends JPanel {
private static final long serialVersionUID = 1L;
public void paintComponent(Graphics g) {
Graphics2D g2d = (Graphics2D) g;
GradientPaint gradient = new GradientPaint(50, 50, Color.blue, 150,
150, Color.orange);
g2d.setPaint(gradient);
g2d.fillOval(70, 70, 100, 100);
}
}
2楼的这位大哥 我明白你的意思 但是刚开始main里面 MyDrawPanel drawPanel = new MyDrawPanel();
只是新建了一个MyDrawpanel 的实力而已,没有运行 其中paintComponent()这个方法 ,那为什么刚开始就运行了这个方法里面的画图 展开
3个回答
展开全部
点击按钮你要他怎么发生变化?
按钮的事件只是让MyDrawPanel发生重绘而已,就算重绘他也是原来那个样子
因为你MyDrawPanel里面的paintComponent方法根本就没有逻辑判断,你要他怎么重绘?
只要在paintComponent那里加个判断,让他一开始一是个颜色,等发生重绘时,就设置另一个颜色
if(xxx) {
一种颜色
} else {
另一种颜色
}
按钮的事件只是让MyDrawPanel发生重绘而已,就算重绘他也是原来那个样子
因为你MyDrawPanel里面的paintComponent方法根本就没有逻辑判断,你要他怎么重绘?
只要在paintComponent那里加个判断,让他一开始一是个颜色,等发生重绘时,就设置另一个颜色
if(xxx) {
一种颜色
} else {
另一种颜色
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
虽然我不太明白你的意思 但是有一点 你new 一个panel对象添加在frame上的时候他已经重画了 而你点击按钮的时候 也是有反应的 只不过你paintComponent里面设计有问题 因为 你添加一个panel在frame上的时候 panel容器里面的所有东西都添加在frame上了 自己多动手试试 debug 一下 看程序怎样运行的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询