为什么paintComponent()方法总是在执行? [问题点数:50分,结帖人YL_Show]

一键查看最优答案

确认一键查看最优答案?
本功能为VIP专享,开通VIP获取答案速率将提升10倍哦!
Bbs2
本版专家分:206
结帖率 100%
Bbs2
本版专家分:206
Bbs1
本版专家分:10
Bbs7
本版专家分:12783
Bbs2
本版专家分:206
Bbs2
本版专家分:193
Bbs2
本版专家分:189
JPanel的使用
JPanel的使用: 类层次结构图: java.lang.Object --java.awt.Component --java.awt.Container --javax.swing.JComponent --javax.swing.JPanel Panel民是java中时常用到的容器之一,Panel除了可以让组件加入外,有效的利用P
paint().paintComponent()方法的区别
1 - paint() 中调用 <em>paintComponent</em>(), paintBorder(), paintChildren() 2 - 最重要的区别是“双缓冲”。Swing 组件的 paint() 中实现了双缓冲,所以不要随便去覆写,会破坏双缓冲的,————建议的方式是覆写 <em>paintComponent</em>(),很多人做的小程序会”闪烁“,就是因为他们覆写了 p...
JPanel面板为什么不能直接用for循环添加
初始化了四个JPanel面板,添加的时候突发奇想, 想试试用for循环,结果出错了。 PS:我知道不能这么写,因为p不是数组。 想问问大家如果想实现for循环添加,应该怎么写呢。 代码如下: ``` Container c= getContentPane(); c.setLayout(new GridLayout(2, 1)); JPanel p1 = new JPanel(new GridLayout(1,3,10,10)); JPanel p2 = new JPanel(new GridLayout(1,2,10,10)); JPanel p3 = new JPanel(new GridLayout(1,2,10,10)); JPanel p4 = new JPanel(new GridLayout(2,1,10,10)); for(int i =1;i<5;i++){ c.add(p[i]); } } ```
JFrame,JPanel,JLabel详解
JFrame是一个顶层的框架类,好比一个窗户的框子。也是一个容器类。这个框子可以嵌入几个玻璃窗。   JPanel是一个容器类,相当于一大玻璃窗。   JLabel等是一些基础组件,它必须置于某个容器里,类似于窗花、剪纸,必须置于窗户的表面。   JFrame自带了一个玻璃窗。可以通过语句 Container c=getContentPane();  获得该内容
jpanel 与 jdesktoppane 的区别是什么啊 【洒分 快来参与】
jpanel 与 jdesktoppane 的区别是什么啊
java中jframe 和jpanel的区别 (java的swing界面)
JFrame是最底层,JPanel是置于其面上,同一个界面只有一个JFrame,一个JFrame可以放多个JPanel。如果你直接在JFrame上放也可以,但是首先不规范,然后要是过于复杂的界面你准备如何处理这么多控件呢? 对于java页面的布局,我的理解就是JFrame 就像是一张大的桌子,你可以直接把鱼呀,肉了,直接放在桌面上,没有盘子进行分类管理,这时我们就需要jpanel这样的盘子来放我
JAVA中的面板组件JPanel的应用
一、为什么要使用面板组件JPanel? 在图形用户界面编程中,如果只是普通的组件布局,我们用基本的三种布局管理器(在我之前的博客中详细介绍了主要的三种布局管理器的使用,下面有文章的链接)就可以了,但是在比较复杂的布局要求时,就需要使用布局管理器的组合使用,这个时候就需要使用到面板组件JPanel。 二、面板组件(JPanel)的使用 JPanel:面板组件,非顶层容器。 一个界面只可以有一
请问怎么在JPanel中添加图片啊
java ``` package PPS; import java.awt.BorderLayout; import java.awt.EventQueue; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.border.EmptyBorder; import javax.swing.JLabel; import javax.swing.SwingConstants; import java.awt.Font; import java.awt.Graphics; import javax.swing.JTextField; import javax.swing.JButton; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class loginFram extends JFrame { private JPanel contentPane; private JTextField textField; private JTextField textField_1; /** * Launch the application. */ public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { public void run() { try { loginFram frame = new loginFram(); frame.setVisible(true); } catch (Exception e) { e.printStackTrace(); } } }); } /** * Create the frame. */ public loginFram() { setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 300); contentPane = new JPanel(); contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); contentPane.setLayout(null); JLabel label = new JLabel("\u7528\u6237\u767B\u5F55\u754C\u9762"); label.setBounds(5, 5, 422, 24); label.setFont(new Font("微软雅黑", Font.PLAIN, 18)); label.setHorizontalAlignment(SwingConstants.CENTER); contentPane.add(label); JLabel label_1 = new JLabel("\u7528\u6237\u540D"); label_1.setBounds(124, 79, 72, 18); contentPane.add(label_1); textField = new JTextField(); textField.setBounds(211, 76, 86, 24); contentPane.add(textField); textField.setColumns(10); JLabel label_2 = new JLabel("\u5BC6\u7801"); label_2.setBounds(125, 124, 72, 18); contentPane.add(label_2); textField_1 = new JTextField(); textField_1.setBounds(211, 121, 86, 24); contentPane.add(textField_1); textField_1.setColumns(10); JButton btnNewButton = new JButton("\u767B\u5F55"); btnNewButton.setBounds(104, 194, 113, 27); contentPane.add(btnNewButton); JButton btnNewButton_1 = new JButton("\u53D6\u6D88"); btnNewButton_1.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { } }); btnNewButton_1.setBounds(231, 194, 113, 27); contentPane.add(btnNewButton_1); JPanel panel = new JPanel(); panel.setBounds(14, 79, 96, 79); contentPane.add(panel); } } ```
Java中JPanel覆盖的的规律是什么?
public class Test1 { private JFrame frame; private Container contentPane; private Login login;//控制登陆
JPanel中添加组件覆盖问题
JPanel中添加组件,空布局,默认是先添加的显示层次比后添加的前。这个层次不可以不额外添加面板修改吗?
关于JPanel 点击鼠标画图的问题,会出现mousePressed空指针是为什么呢
public class iPanel extends JPanel { private static final int FRAME_HEIGHT = 800; private static final int FRAME_WIDTH = 800; private JFrame frame; private JPanel drawPanel; private JToolBar toolbar; private JButton lineButton; private JButton rectangleButton; private JButton ellipseButton; private Color drawingColor;; private int shape; private int[] position; public iPanel(){ this.frame = new JFrame("Easy Painting"); this.drawPanel = new JPanel(); toolbar = new JToolBar(); drawPanel.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) {} public void mouseReleased(MouseEvent e) { position[2]= e.getX(); position[3] = e.getY(); paint(); } public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} public void mousePressed(MouseEvent e) { position[0] = e.getX(); position[1] = e.getY(); } }); setupComponents(); } private void setupToolbar(){ lineButton = new JButton ("line"); rectangleButton = new JButton ("rectangle"); ellipseButton = new JButton ("ellipse"); colorButton = new JButton ("color"); toolbar.add(lineButton); toolbar.add(rectangleButton); toolbar.add(ellipseButton); toolbar.add(colorButton); lineButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ shape = 0; } }); rectangleButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ shape = 1; } }); ellipseButton.addActionListener(new ActionListener(){ public void actionPerformed(ActionEvent e){ shape = 2; } }); frame.add(toolbar, BorderLayout.NORTH); } private void setupComponents(){ setupToolbar(); frame.add(drawPanel, BorderLayout.CENTER); frame.setSize (FRAME_WIDTH, FRAME_HEIGHT); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void paint () { int startx = position[0]; int starty = position[1]; int endx = position[2]; int endy = position[3]; Graphics g = getGraphics(); g.setColor(drawingColor); switch (shape) { case 0: g.drawLine(startx, starty, endx, endy); break; case 1: g.drawRect(startx, starty, Math.abs(endx-startx), Math.abs(endy-starty)); break; case 2: g.drawOval(startx, starty, Math.abs(endx-startx), Math.abs(endy-starty)); break; case 3: g.drawRect(startx, starty, Math.abs(endx-startx), Math.abs(endx-startx)); break; case 4: g.drawOval(startx, starty, Math.abs(endx-startx), Math.abs(endx-startx)); break; } } public static void main(String[] args){ new iPanel(); } } 运行会报错: Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at 1.mousePressed(java:63) mouseReleased
如何调用paintComponent()方法,生成圆点
想在屏幕上显示一个圆点,怎么改 import java.awt.*; import javax.swing.*; import java.awt.event.*; import javax.swing
JavaSwing_3.1: JPanel(面板)
JPanel,面板。JPanel 是在开发中使用频率非常高的一般轻量级面板容器组件。
求助Java 为什么 public void paint(Graphics g)方法画不出来 无法画出来定义的图形 求大神解析
package cn.hao.Util; import java.awt.*; import java.awt.Canvas; import java.awt.Color; import java.awt.Graphics; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; cl...
component.paint(Graphics)如何使用?什么原理?
我是j2se初学者 在做程序时候遇到一个问题。 我在用 jpanel.paint(g) 的时候,将jpanel的组件画在一个bufferImage上。 但是画的时候,会把画面其他的实时更新的组件,一起
Java 关于paintComponent函数问题
Java 关于<em>paintComponent</em>函数问题 2009-09-20 20:36Bakkwo | 分类:JAVA相关 | 浏览2993次 public class MyPanel extends JPanel{ public void <em>paintComponent</em>(Graphics g) { super.<em>paintComponent</em>(g);//这句有啥用,去掉也得啊
Container和JPanel有什么区别
如题 别去网上COPY
JPanel的add方法的问题,疑惑中
JPanel有一个继承的<em>方法</em>add add public void add(Component comp, Object constraints)将指定的组件添加到此容器的尾部。同时通知布局管理器使用
paintComponent方法的一些小把戏
在做作业的时候,遇到这样一道题目。 创建一个名为RegularPolygonPanel的子类,来绘制一个n条边的正多边形,多边形放在面板的中心位置,大小和面板的大小成比例。从RegularPolygonPanel创建一个五边形,一个六边形,一个七边形,一个八边形,一个九边形和一个十边形,然后在框架中显示他们。 起初,我的RegularPolygonPanel写成如下形式:     class...
关于Swing中Box跟JPanel以及setSize的疑问
最近我在学习中发现了一些问题,就是下面的程序,有两个问题: 1.JTextField与JPasswordField的setSize<em>方法</em>是用来设置大小的么?为什么我在使用的时候却没有任何效果呢? 2.为什么要把Box加入JPanel,然后再加入JFrame,才能得到我要的效果呢?而当我直接把Box加入JFrame时,界面却变得很奇怪,特别是JTextField跟JPasswordField会膨胀开来? 程序如下: package test.swing; import java.awt.event.*; import javax.swing.*; public class LoginTest extends JFrame implements ActionListener { private JPanel jp=new JPanel(); private JPanel jp1=new JPanel(); private JPanel jp2=new JPanel(); private JPanel jp3=new JPanel(); JLabel name=new JLabel("请输入用户名"); JLabel password=new JLabel("请输入密码"); JLabel show=new JLabel(); JButton login=new JButton("登陆"); JButton reset=new JButton("重置"); JTextField jtf_name=new JTextField("",10); JPasswordField jpf_password=new JPasswordField("",10); private Box horibox1=Box.createHorizontalBox(); private Box horibox2=Box.createHorizontalBox(); private Box horibox3=Box.createHorizontalBox(); private Box verbox=Box.createVerticalBox(); public LoginTest(){ name.setSize(10, 10); password.setSize(10, 10); //jt_name.setSize(200, 1000); //setSize为什么不起作用呢? //jpf_password.setSize(200,1000); //setSize为什么不起作用呢? jpf_password.setEchoChar('*'); horibox1.add(name); horibox1.add(Box.createHorizontalStrut(20)); horibox1.add(jtf_name); horibox2.add(password); horibox2.add(Box.createHorizontalStrut(20)); horibox2.add(jpf_password); horibox3.add(login); horibox3.add(Box.createHorizontalStrut(40)); horibox3.add(reset); jp1.add(horibox1); jp2.add(horibox2); jp3.add(horibox3); verbox.add(jp1); verbox.add(jp2); verbox.add(jp3); // verbox.add(horibox1); //把上面六行换成这三行,为什么效果会变得很奇怪呢? // verbox.add(horibox2); //JPanel跟Box之间有什么样的区别? // verbox.add(horibox3); verbox.add(show); login.addActionListener(this); reset.addActionListener(this); this.add(verbox); this.setTitle("登陆窗口"); this.setVisible(true); this.setBounds(200, 200, 300, 300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String []args){ new LoginTest(); } @Override public void actionPerformed(ActionEvent e) { if(e.getSource()==login){ jtf_name.setText("login"); jpf_password.setText("login"); }else if(e.getSource()==reset){ jtf_name.setText("reset"); jpf_password.setText("reset"); } } }    
JFrame(框架)中添加和设置JPanel(面板)的方法
Swing 程序用JFrame 对象实现了它们的窗口。JFrame 类是AWT Frame 类的一个子类。它还加入了一些Swing 所独有的特性。与 Frame 的使用十分相似。唯一的区别在于,你不能将组件加入到JFrame中。你可以或者将组件加入到JFrame 的content pane(内容面板) 中,或者提供一个新的content pane(内容面板)。    面板与顶层容器的
为什么要重写paintcomponent?
有一个类继承了了jpanel,然后在里面重写了paintcompaint,以实现设置jpanel中背景图的目的 但是有一个问题,既然默认的没有被重写的paintcomponent也有绘制组件的效果,那
在Jframe添加Jpanel组件是始终没有显示效果
代码如下。弄了两个按钮的。一个直接用container直接添加到Jframe上可以显示出来。但是另外一个先添加到Jpanel上,再添加到Jframe上就没有显示出来,设置的颜色属性也没有显示出来。。希
求助,为什么覆写的paintComponent没调用?
public class LiveTest extends JFrame implements ActionListener{ JButton jb = new JButton("TEST"); pu
图形画不出来(java)
package draw; import java.awt.*; import java.awt.geom.*; import javax.swing.*; public class DrawTest { public static void main(String[] args) { EventQueue.invokeLater(()-> { JFrame frame = new DrawFrame(); frame.setTitle("DrawTest"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); }); } } /** *A frame that contains a panel with drawings */ class DrawFrame extends JFrame{ public DrawFrame() { add(new DrawComponent()); pack(); } } /** *A component that displays rectangle and ellipses. */ class DrawComponent extends JComponent { private static final int DEFAULT_WIDTH = 400; private static final int DEFAULT_HEIGHT = 400; public void painComponent(Graphics g) { Graphics2D g2 = (Graphics2D) g; //draw a rectangle double leftX = 100; double topY = 100; double width = 200; double heigh = 150; Rectangle2D rect = new Rectangle2D.Double(leftX,topY,width,heigh); g2.draw(rect); //draw a enclosed ellipse Ellipse2D ellipse = new Ellipse2D.Double(); ellipse.setFrame(rect); g2.draw(ellipse); //draw a diagonal line g2.draw(new Line2D.Double(leftX,topY,width+leftX,heigh+topY)); //draw a circle with same center double centerX = rect.getCenterX(); double centerY = rect.getCenterY(); double radius = 150; Ellipse2D circle = new Ellipse2D.Double(); circle.setFrameFromCenter(centerX, centerY,centerX+radius,centerY+radius); g2.draw(circle); } public Dimension getPreferredSize() { return new Dimension(DEFAULT_WIDTH,DEFAULT_HEIGHT); } } ``` ``` 以上是我的代码,我是从JAVA核心技术那本书上看来的,按理说像这种书一般不会出错。但我对了几遍发现并没有和他不一样的地方,自己也不是很懂,请前辈们指教。为什么图形就是画不出来呢
关于用paintComponent(Graphics comp)绘图的问题,为什么我画的东西没有显示?
我的程序如下: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Map extends J
重写paintComponent出错,求解!
首先请看代码: package Test_Rectangle2D; import java.awt.Container; import java.awt.EventQueue; import java
Java 关于paintComponent与paint有什么区别?各自的特点?
大神们回答的详细一点。求教了
paintComponent()会自动调用?
public void <em>paintComponent</em>(Graphics g) {}好像会自动调用,只要它里面的变量发生变化,就会自动调用???
paint() update() paintComponent() paintComponent()这些方法是怎么调用的?什么时候需重写?
paint() update() repaint() <em>paintComponent</em>()这些<em>方法</em>是怎么自动调用的? 什么时候需重写?怎么重写? 这个问题困扰我一个星期了,查了好多书都没有写清楚. 比例下
paintComponent(g)方法绘制的背景图上面如何添加组件
添加组件一般都是新建一个JPanel,然后在JPanel上随便添加,可是那样就把背景图片遮盖掉了,有什么办法吗?我试过把JPanel透明,可是没用。
JFrame中通过getcontentpane(),getLayeredPane()添加组件的区别。
如题,JFrame可以通过getcontentpane(),得到一个JRootPane中的contian类对象contentPane。 也可以通过getLayeredPane(),得到JRootPane类对象layeredPane( JComponent子类)。 通过两种方式得到的不同类型的不同对象都可以add()组件,并将组件显示出来,这两个对象都是继承自Component类。 那么通过这两种<em>方法</em>进行add组件有什么区别,其中layeredPane说是负责管理图层,add进去的组件可以分层,那么当同时在contentPane和layeredPane add组件,那又谁又在上一图层。而且完全不能理解只要是JFrame中任何一个继承自Component的对象add()组件后都可以在JFrame上显示的原因,话说JFrame本生就是继承自Component,对JFrame自己使用add()<em>方法</em>也能显示出来,感觉太乱了。 那这些在JFrame中的component的子类们(包括JFrame自身),它们都可以paint,那它们paint的图层相互覆盖关系是怎样的。 请大牛帮助理解一下这些绘图的机制。
Java 关于paintComponent与paint有什么区别?各自的特征
重点: 1 - paint() 中调用 <em>paintComponent</em>(), paintBorder(), paintChildren() 2 - 最重要的区别是“双缓冲”。Swing 组件的 paint() 中实现了双缓冲,所以不要随便去覆写,会破坏双缓冲的,————建议的方式是覆写 <em>paintComponent</em>(),很多人做的小程序会”闪烁“,就是因为他们覆写了 paint() <em>方法</em>
改写基类方法后的调用问题.下面是代码,问题时代码中的两个paintComponent(Graphics g)方法是何时被调用的?谁调用的?
import java.awt.*; import java.awt.event.*; import javax.swing.*; class DrawingExample implements Ac
JFrame 和JPanel 的关系-区别(学习笔记)
在学习图形用户界面的时候,搞清楚 JFrame 和 JPanel是非常关键的下面分别给出两个例子加以区分 JFrame 的使用: java.awt.*javax.swing.*Frame1 {     (String[] args) {         JFrame f = JFrame();         f.setSize();         f.setVisible();        ...
请问大家JFrame 和 Jpanel 的区别是什么?
请问大家JFrame 和 Jpanel 的区别是什么?
为什么paintComponent会被自动调用啊
我写的这个继承了JPanel然后JPanel继承了JComponent啊 我以为JComponent会有构造函数自动调用<em>paintComponent</em><em>方法</em>啊然后可是没有啊! 那我就不明白为什么我的类里重
paintComponent(Graphics g)会连续调用两次,想问各位大神什么原理?
在<em>paintComponent</em>()里面加多一个输出语句,可以发现发现protected void <em>paintComponent</em>(Graphics g)会连续调用两次,想问各位大神什么原理? import javax.swing.JFrame; import javax.swing.JPanel; import java.awt.Graphics; public class DrawArcs extends JFrame { public DrawArcs() { setTitle("DrawArcs"); add(new ArcsPanel()); } /** Main method */ public static void main(String[] args) { DrawArcs frame = new DrawArcs(); frame.setLocationRelativeTo(null); // Center the frame frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); frame.setSize(250, 300); } } // The class for drawing arcs on a panel class ArcsPanel extends JPanel { // Draw four blazes of a fan int i=0; protected void <em>paintComponent</em>(Graphics g) { super.<em>paintComponent</em>(g); System.out.println(getWidth()+"+"+getHeight()+"+"+i); i++; int xCenter = getWidth() / 2; int yCenter = getHeight() / 2; int radius = (int)(Math.min(getWidth(), getHeight()) * 0.4); int x = xCenter - radius; int y = yCenter - radius; g.fillArc(x, y, 2 * radius, 2 * radius, 0, 30); g.fillArc(x, y, 2 * radius, 2 * radius, 90, 30); g.fillArc(x, y, 2 * radius, 2 * radius, 180, 30); g.fillArc(x, y, 2 * radius, 2 * radius, 270, 30); } }
painComponent(Graphics g)
在一个JPanle的扩展类中画图, 重写protected void painComponent(Graphics g)时,为什么第一句要引入下面这句 super.<em>paintComponent</em>(g);
java中组件的paint(Graphics g)与paintComponent(Graphics g)的区别
/---------------资料1---------------/ 昨晚小许同学把<em>paintComponent</em><em>方法</em>以一t之差写成painComponent,在花费了大量的人力物力之后 才找到这个错误,不得不感慨:粗心才是程序员的噩梦啊! 马士兵曰过:“重写<em>方法</em>你给我在API文档中找<em>方法</em>签名!”,小许,你懂了吗? 不过小许问的问题倒让我发现了Swing中paint与p
请教关于paintComponent方法
如下的一小段代码: ... class MyPanel extends JPanel{ public void <em>paintComponent</em>(Graphics g) { super.paintComp
paintComponent方法如何实现调用的?
在一个Jpanel子类的表面上绘图,改写的<em>paintComponent</em><em>方法</em>如何实现的自动调用?谢谢!
调用repaint()后为什么这个paintComponent()没有执行
因为你的这Jpanel没有被放到一个JFrame中去显示而导致的;
JFrame和JPanel是两个什么样的类,有什么区别!
我知道JFrame就相当画布 不知道JPanel是什么?
java中paint方法paintComponent方法的不同
/* 1.由Component.java源代码中可以看见其中的paint()<em>方法</em>体是空的,在Container中重写了该<em>方法</em>,其子类Window等也重写了该<em>方法</em> 2.由JComponent.java源代码中可以看见其中的paint()<em>方法</em>中调用<em>paintComponent</em>, paintChildren, paintBorder等<em>方法</em>; 所以该类中的pain...
一个关于paintComponent的小细节问题
import java.awt.*; import javax.swing.*; public class TestPolyline extends JFrame { public TestPolyline() { add(new PolylinePanel()); } public static void main(String[] args) {
关于jpanel调用 paintComponent的问题
为什么利用反射生成jpanel对象之后,没有调用<em>paintComponent</em><em>方法</em>。 这种情况下,将窗口缩小后就会显示预期的图像。 直接利用数组最想不会出现这种问题。。 这是为什么啊??
java,paintComponent画图的时候把组件给覆盖了。该怎么解决?
我的程序的布局是这样的: 一个Jframe的(0,0)位置有一个大小(100,100)的JPanel面板,这个JPanel面板会进行画图。 有一个JMenuBar加在这个Jframe的(0,0)位置,大小为(50,50)。 当JPanel接收到信号调用<em>paintComponent</em>之后,这个JMenuBar就被覆盖了,得把鼠标放上去才会显示出来。 上述的问题该怎么解决呢?
众所周知,JPanel容器是JComponet的子类,那么JPanel和JComponent有什么区别
众所周知,JPanel容器是JComponet的子类,那么JPanel和JComponent有什么区别
Java中paintComponent怎么用?
我是初学,帮我看看这段代码。 目的:做了一个JFrame,上面有一个JButton,点击JButton,出现一个showInputDialog对话框,在对话框输入一些String之后,我想在JFram
为什么JFrame只能放入两个JPanel
代码如下,不知道为什么,只能显示第一个jpanel和最后一个jpanel,这是为什么,高手帮帮忙 package swing; import java.awt.Color; import javax.
Java 程序设计基础(第四版)下
第 10 章 Java 语言的输入输出与文件处理 什么是文件的输入输出?程序从文件读取数据称为文件的输入;程序向文件写入数据称为文件的输出。什么是流?Java 语言中分为哪两种流?这两种流有何差异?流是指计算机个部件之间的数据流动。在 Java 语言中,把不同类型的输入输出源(键盘、屏幕、文件、网络等)抽象为流,而其中输入或输出的数据称为数据流; 按照数据的传输方向,流可以分为输入流和输出流。从流的
Java---面板组件(Jpanel)1
Java---面板组件(Jpanel)1 存在的原因: 如果是普通的组件布局,用之前讲到的三种布局管理器就可以解决,但是在比较复杂的要求时就需要用到布局管理器的组合使用。比如下图: JPanel:面板组件,非顶层容器。 一个界面只能有一个JFrame 窗体组件,但是可以有多个JPpanel面板组件,而且在JPanel上也是可以用FlowLayOut,BorderLayOut,GirdL...
请教一下关于paint() paintComponent()和paintComponents()三个方法的区别
paint() <em>paintComponent</em>()和<em>paintComponent</em>s()三个<em>方法</em>的区别 目前我知道的是 如果要重绘组件的话, awt要重写paint() swing要重写paintComp
JPanel和getContentPane()的问题,急
我现在用了一个Comfyj来调用OCX控件,已经可以在JFrame中调用出来控件了。 调用的<em>方法</em>大致如下: public class Test extends JFrame { public Test
jframe 里面的container用和不用的区别
jframe里面有一个container,用来创建之后,往里面放组件, 但是也可以用this.add()来放入组件, 那这个container用和不用有什么区别呢? 感觉不用container直接ad
怎么在DesktopPane中加上背景图片?
我在DesktopPane中加上背景图片,又几种办法: 1、再上面加JLabel,JLabel上加图片,使用BorderLayout。缺点:其中的子窗口不能最小化。 2、继承DesktopPane类,
JPanel
import java.awt.*; import javax.swing.*; public class Test extends JFrame{//把需要的组件全部在这里定义 JPanel mb1,mb2; JButton an1,an2,an3,an4,an5; public static void main(String[] args){ Test lx=new T...
【Swing】paint与paintComponent的区别
查API文档,查得在类Jcomponent下的paint<em>方法</em>有以下解释:        “This method actually delegates the work of painting to three protected methods: <em>paintComponent</em>, paintBorder, and paintChildren. They're called in the
关于组件绘制的问题paintComponent函数
public class Test extends JPanel implements MouseListener,MouseMotionListener { private Polygon m_p
Java_GUI中实现paintComponent方法并画背景图片和曲线的方法
GUI
repaint方法无效,paintComponent方法未被调用
刚学Java,菜鸟都算不上……在做一个2048的小游戏,然后加上一个超简易AI的时候就出BUG了……求解答 @Override public void keyPressed(KeyEvent e) { // TODO 反射 coreControl.AI(); switch (e.getKeyCode()) { case KeyEvent.VK_UP: coreControl.keyUp(); break; case KeyEvent.VK_DOWN: coreControl.keyDown(); break; case KeyEvent.VK_LEFT: coreControl.keyLeft(); break; case KeyEvent.VK_RIGHT: coreControl.keyRight(); break; case KeyEvent.VK_W: coreControl.keyW();break; case KeyEvent.VK_A: coreControl.AI();break; default: break; } } 然后AI() 是这么写的 public void AI() { while (!Img.isLost) { if(!Img.isLost) { keyRight(); System.out.println("Right"); } if(!Img.isLost) { keyDown(); System.out.println("Down"); } if(!Img.isLost) { System.out.println("Left"); keyLeft(); } if(!Img.isLost) { System.out.println("Up"); keyUp(); } } } 可以看到,两段代码实际上调用的是同一套<em>方法</em> 结果按键操作时可以正常刷新。而当按下A键,调用AI时,窗口就不会刷新了,经过排除,发现是调用repaint时出现问题。repaint没有调用我重写的<em>paintComponent</em><em>方法</em>。 最神奇的时,当我把AI()放在AI()所在的类的构造器中,由程序自动调用,然后就可以正常跑了…… 这是正常运行图片,分数正常刷新 ![图片说明](https://img-ask.csdn.net/upload/201611/28/1480344496_620052.png) 然后这个是不正常的,分数一直停留在初始的0,经测试,<em>paintComponent</em><em>方法</em>从未被调用 ![图片说明](https://img-ask.csdn.net/upload/201611/28/1480344536_213789.png)
Swing编程方面步骤之三JFrame、JPanel、paint与paintComponent的区别
参考一 关于JFrame和JPanel问题
repaint方法没有调用paintComponent 为啥呀
import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.Image; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.Timer; public class Board extends JPanel implements ActionListener { public static final int B_WIDTH = 450; public static final int B_HEIGHT = 450; public static final int DOT_SIZE = 15; public static final int ALL_DOTS = 900; public static final int DELAY = 100; private Timer timer; boolean live = true; Image offScreenImage = null; Snake mySnake = new Snake(); public static void main(String[] args) { new Board().launchGame(); } public void launchGame() { JFrame myJFrame = new JFrame(); myJFrame.setTitle("Snake"); myJFrame.setLocation(400,200); myJFrame.getContentPane().add((new Board())); myJFrame.pack(); myJFrame.addKeyListener(new Board().new KeyMonitor()); myJFrame.setVisible(true); myJFrame.setResizable(false); myJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); timer = new Timer(DELAY, this); timer.start(); } public Board() { this.setBackground(Color.BLACK); this.setPreferredSize(new Dimension(B_WIDTH, B_HEIGHT)); this.setFocusable(true); this.addKeyListener(new KeyMonitor()); } @Override protected void <em>paintComponent</em>(Graphics g) { super.<em>paintComponent</em>(g); this.setDoubleBuffered(true); this.draw(g); } public void draw(Graphics g) { mySnake.draw(g); Food f = new Food(); f.draw(g); } @Override public void actionPerformed(ActionEvent e) { repaint(); } private class KeyMonitor extends KeyAdapter { @Override public void keyPressed(KeyEvent e) { mySnake.keyPressed(e); } } } import java.awt.Color; import java.awt.EventQueue; import java.awt.Graphics; import java.awt.event.KeyEvent; import javax.swing.JFrame; public class Snake { Board b; Direction dir = Direction.R; int x, y, size; private int sX[] = new int[Board.ALL_DOTS]; private int sY[] = new int[Board.ALL_DOTS]; public Snake() { size = 2; sX[0] = 1 * Board.DOT_SIZE; sX[1] = 0 * Board.DOT_SIZE; sY[0] = 0 * Board.DOT_SIZE; sY[1] = 0 * Board.DOT_SIZE; } public Snake(int x, int y, Board b) { this.x = x; this.y = y; this.b = b; } public void draw(Graphics g) { move(); Color c = g.getColor(); g.setColor(Color.GREEN); for(int i=0; i0; i--) { sX[i] = sX[(i-1)]; sY[i] = sY[(i-1)]; } switch(dir) { case U : sY[0] -= Board.DOT_SIZE; break; case D : sY[0] += Board.DOT_SIZE; break; case L : sX[0] -= Board.DOT_SIZE; break; case R : sX[0] += Board.DOT_SIZE; break; } } } import java.awt.Color; import java.awt.Graphics; import java.util.Random; public class Food { private int fX; private int fY; private static Random r = new Random(); public Food() { fX = r.nextInt(Board.B_WIDTH / Board.DOT_SIZE) * Board.DOT_SIZE; fY = r.nextInt(Board.B_HEIGHT / Board.DOT_SIZE) * Board.DOT_SIZE; } public void draw(Graphics g) { Color c = g.getColor(); g.setColor(Color.RED); g.fillOval(fX, fY, Board.DOT_SIZE, Board.DOT_SIZE); } } public enum Direction { U, D, L, R } 初学者写的贪吃蛇,用timer计时器,每隔一段时间调用一次repaint(),但运行起来发现,repaint是每隔一段时间被调用了,但<em>paintComponent</em><em>方法</em>只被调用了一次(或者两次)。。求解啊这bug烦死我了
关于paintComponent的小细节(Graphics 类)
题目:编写一个程序,使用箭头键绘制线段。 对于这个
repaint和paintComponent的问题,急~~~
package com.test; import java.awt.Graphics; import javax.swing.JPanel; public class GamePanel extend
【paint和paintComponent的区别,兼谈Canvas和JPanel】
问题背景     最近抽时间读了《Core Java》10th edition, 在Graphics Programming中讲到显示message,只需要override组件的<em>paintComponent</em><em>方法</em>,而在阅读另外一本《Java 2D游戏编程入门》时,作者直接使用paint<em>方法</em>,并非<em>paintComponent</em>, 对于二者的区别,不甚了解,网上有很多关于此话题的分析版本,看的一头雾水,
请问创建一个JFrame与JPanel有什么不同?
请问创建一个JFrame与JPanel有什么不同?
关于在JPanel中加入监听器事件
我想在一个JPanel上添加一个监听事件,当鼠标点击这个JPanel时这个JPanel会消失,怎么实现啊,谢谢。
swing 里JPanel里有几种板分别是干什么
frame1.getContentPane().add(panel); 我只用过这个东西并且还不知道是怎么回事, 书上说什么内容板,根板,玻璃板, 那些是用来干什么的, 我用的是不是内容板啊 请大虾们
JFrame与JPanel的区别
JFrame是顶级容器,而JPanel是普通容器。包含Swing组件的程序必须包含一个顶级容器,而Swing组件不可以直接加入到顶级容器中。Sun文档有下列相关的解释:1、The containment hierarchy for any window or applet that contains Swing components must have a Swing top-level cont
Java用JFrame、JPanel、Graphics绘图案例讲解
本文将介绍Java绘图工具的使用,通过具体示例,演示通过Java的Graphics类在JFrame中的JPanel上绘制图形的步骤和<em>方法</em>。 JFrame类,是存放组件的容器。相当于相框。 JPanel类,是面板容器类。相当于画板。 Graphics类,是Java用绘图类,相当于画笔。
关于JPanel的使用
随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、博主微信(guyun297890152)、QQ技术交流群(183198395)。 package com; import java.awt.Color; import javax.swing.BorderFactory; import javax.swing.JButton; impo...
关于paintComponent方法
import java.awt.*; import javax.swing.*; import java.awt.geom.*; public class try1 { public static v
按钮用void paintComponent(Graphics g)绘制之后,怎么改变颜色?
是这样的,我想弄一个圆角按钮出来,就百度了一下,看到了这篇文章http://blog.csdn.net/lz12366007/article/details/4659056 原作者使用了这种<em>方法</em>绘制按钮void <em>paintComponent</em>(Graphics g){} 问题是这样画出来的按钮,再用常规的JButton.setBackground(Color)改变颜色就没用了。 倒是在void <em>paintComponent</em>(Graphics g){}内部可以设置不同状态下的按钮颜色,但是我觉得有BUG(或者说我不知道怎么达到我想要的效果) public void <em>paintComponent</em>(Graphics g) { if(getModel().isRollover()){ g.setColor(new Color(255,0,0)); }//如果鼠标在按钮上,就把颜色设置为红色 if (getModel().isPressed()) { g.setColor(new Color(0,255,0)); }//如果按钮被按下去了,就把颜色设置为绿色 else { g.setColor(new Color(0,0,255)); }//否则就把颜色设置为蓝色 g.fillRoundRect(0, 0, getSize().width-1,getSize().height-1,6,6); //画出圆角 super.<em>paintComponent</em>(g); } 麻烦的是中间那三个if-else分支有冲突,isPressed和isRollover没冲突,isPressed和else没冲突,isRollover和else没冲突,但是3个放一起就不行,isPressed会被else覆盖(显现不出按下去时的绿色) 但是当删掉else分支时,还有个默认的颜色——白色,这个白色我不知道在哪里设置的(setBackground也没用)当按钮既不是isRollover状态也不是isPressed状态时,就显示白色。 请问我应该怎么办?
关于repaint,paint,paintComponent...的问题
http://topic.csdn.net/t/20050419/17/3949654.html#A:小弟想把控件设为setEnable(false);开始没问题,可后来在<em>方法</em>中加了一条读Socket的阻塞语句     ReadLine(),问题就来了,界面上每个按钮在阻塞时都没变化,必须要等到<em>方法</em>返回才变为disabled,     如果要它马上变化,试着用repaint(),不行,只能用p
paint()方法paintComponent()方法的区别
awt控件中是在paint<em>方法</em>进行绘制,     所以在awt控件继承时,只要简单的覆盖paint<em>方法</em>就可以了。     而在swing控件中,paint<em>方法</em>会依次调用paintcomponent,   paintborder,   paintchildren三个<em>方法</em>,后两者一般默认即可,所以swing编程时,如果继承jcomponent或者其子类,要覆盖paintcomponent而不是pain
paintComponent中调用setSize方法
一段困绕了近半个月的代码: public void <em>paintComponent</em>(Graphics g) {  super.<em>paintComponent</em>(g); // System.out.println(image.getWidth()+" "+image.getHeight());  g.drawImage(image,0,0,image.getWidth(),image.getHeight(
paint()和paintComponent的问题
import java.awt.*; import javax.swing.*; import java.awt.Graphics; class Test extends JFrame{ publi
paintComponent的调用时机与java 中类的初始化的问题
public class Game { public static void main(String args) { Snake snake = new Snake(); Food food = n
Frame中的paint什么时候调用
paint会在调用setVisible(true);之后调用 paint是container中的<em>方法</em>,Frame继承container 这里还有一个小问题,图中可见两个打印位置,我用eclipse运行程序,首先打印“hh”然后是“paint run”,但我打断点调试,会先运行“paint run”,为什么呢,有没有知道的,谢谢
关于awt/swing组件中paint, update, paintComponent, repaint的经验
1、Applet/JApplet:  repaint+paint       -- dragged, paint repaint+update+paint  -- dragged, update  Applet:  repaint+paint -- 自动重画    repaint+update --  不自动重画  JApplet:都不自动重画  结论:awt组件中的paint<em>方法</em>自动重画
关于paint(),repaint(),paintcomponent()
-
操作系统:Pintos Project 1
也是借鉴了网上一些实现,勉勉强强将Project1过了,不过感觉代码中还是有些问题的。alarm测试集这个测试集要求重新实现timer_sleep()函数,将原来的忙等待改为非忙等待。 思路跟阻塞线程类似: 1.为线程增加一个新的状态,表示线程正处在sleep中。 thread.h:在文件靠前添加宏定义: #define THREAD_SLEEP THREAD_BLOCKED 2.在内核中增加一
paint方法paintComponent的区别
JLabel类同其它的Swing组件一样,继承至javax.swing.Jcomponent.Swing。它们都是通过调用JComponent组件的paint<em>方法</em>来画界面。我们可以通过重载JComponent的公开<em>方法</em>paint来修改一个组件画界面的行为。下面是一个JComponent的paint<em>方法</em>的定义。? public?void?paint(Graphicsg)? 作为paint<em>方法</em>的参...
请问在重写paintComponent()方法或者在重写paint()方法的时候,第一句添加super.paintComponent()或者super.paint()的意义
为什么在重写的第一句有些时候要加这么一句调用父类<em>方法</em>的语句?有什么意义吗??
paintComponent方法好奇怪
import javax.swing.SwingUtilities; import javax.swing.JFrame; import javax.swing.JPanel; import jav
paintComponent方法
class NotHelloWorldPanel 中的super.<em>paintComponent</em>(g)起什么作用?不太明白 请高手解答。谢谢 public class NotHelloWorld { p
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习<em>方法</em>莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
js调试工具 scd10chs下载
js调试工具 scd10chs 安装完执行注册表 相关下载链接:[url=//download.csdn.net/download/silensah/3454234?utm_source=bbsseo]//download.csdn.net/download/silensah/3454234?utm_source=bbsseo[/url]
计算机组成原理下载
计算机组成原理,学习计算机 硬件接口技术的基础! 相关下载链接:[url=//download.csdn.net/download/tmtv315/5133267?utm_source=bbsseo]//download.csdn.net/download/tmtv315/5133267?utm_source=bbsseo[/url]
jqGrid demo in JSP Struts2 & Hibernate 源码1/3下载
这只是源码包的第一部分(part1),请同时下载其它两部分,part3 and part2 下载三部分后请用winrar解压. 相关下载链接:[url=//download.csdn.net/download/hanit/1558152?utm_source=bbsseo]//download.csdn.net/download/hanit/1558152?utm_source=bbsseo[/url]
相关热词 c# 图片上传 c# gdi 占用内存 c#中遍历字典 c#控制台模拟dos c# 斜率 最小二乘法 c#进程延迟 c# mysql完整项目 c# grid 总行数 c# web浏览器插件 c# xml 生成xsd
我们是很有底线的