JAVA GUI初学者提问,关于载入图片 5C

创建了一个Frame的class
添加俩个JLabel控件(label_icon和label3)
练习添加俩个图片控件

 class LabelFrame extends JFrame
{   private JLabel label_icon;
   private JLabel label3;
  public LabelFrame()//构造器
  {   
     Icon star=new ImageIcon("src/star.png" );
      label_icon=new JLabel(null ,star ,SwingConstants.LEFT);
      add(label_icon);
      ////////

      label3=new JLabel();
      label3.setText("lately set");
      label3.setIcon(star);
      label3.setHorizontalAlignment(SwingConstants.CENTER);
       add(label3);
  }



}   


添加了label3控件以后,label_icon的图片就不会显示。只会显示label3

就是:只有把 add(label3); 这一行注释掉
就能显示label_icon(当然在左侧)

如何俩个控件都显示出来???是布局问题吗。。

4个回答

两个按钮你需要设置布局吧,另外就是你添加lable3,它是吧lableicon覆盖了(其实它还是存在的)你可以通过尝试设置lable3的长度宽度和设置布局(可以尝试设置网格布局)。希望对你有帮助。

你都重新覆盖了,还怎么显示,要不你就大小改一下

可以试试在JFrame里放一个JPanel,然后add这个JPanel,再把需要的东西按需要放进这个panel就行。你可以试试下面的这种排版看是不是你想要的

 class LabelFrame extends JFrame{

    private JLabel label_icon;
    private JLabel label3;

    public LabelFrame(){ 
        JPanel panel = new JPanel (new BorderLayout());

        Icon star=new ImageIcon("src/star.png" );
        label_icon=new JLabel();
        label_icon.setIcon(star);
        panel.add(label_icon, BorderLayout.WEST);

        label3=new JLabel();
        label3.setText("lately set");
        label3.setIcon(star);
        panel.add(label3, BorderLayout.CENTER);

        add(panel);
    }
}   

给你个布局演示,把你的控件加进去吧。

 class LabelFrame extends JFrame {
    private JLabel label_icon;
    private JLabel label3;

    public LabelFrame()// 构造器
    {

        this.setTitle("布局实例");
        this.setBounds(500, 200, 300, 300);
        this.setLayout(new BorderLayout(10, 10));
        Icon star = new ImageIcon("src/star.png");

        this.add(new JButton("北"), BorderLayout.NORTH);
        this.add(new JButton("东"), BorderLayout.EAST);
        this.add(new JButton("南"), BorderLayout.SOUTH);
        this.add(new JButton("西"), BorderLayout.WEST);
        this.add(new JButton("中"));
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);

        /*
         * label3 = new JLabel(); label3.setText("lately set"); label_icon = new JLabel(null, star, SwingConstants.WEST);
         * label3.setIcon(star); label3.setHorizontalAlignment(SwingConstants.CENTER); this.add(label3);
         */
    }

    public static void main(String[] args) {
        LabelFrame lf = new LabelFrame();
    }
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
JAVA GUI 初学者关于布局提问

我想控件 Icon star 和 Icon star 一上一下放置,请求懂的大神 ``` class LabelFrame extends JFrame { private JLabel label_icon; private JLabel label3; public LabelFrame()//构造器 { setSize(300,300); setLayout( new FlowLayout()); Icon star=new ImageIcon("src/star.png" ); label_icon=new JLabel(null ,star ,SwingConstants.TOP); add(label_icon); //////// label3=new JLabel(); label3.setText("lately set"); label3.setIcon(star); label3.setVerticalAlignment(SwingConstants.BOTTOM); add(label3); } } ``` 这段代码会报错 > Exception in thread "main" java.lang.IllegalArgumentException: horizontalAlignment at java.desktop/javax.swing.JLabel.checkHorizontalKey(JLabel.java:595) at java.desktop/javax.swing.JLabel.setHorizontalAlignment(JLabel.java:749) at java.desktop/javax.swing.JLabel.<init>(JLabel.java:161) at LabelFrame.<init>(Puls.java:40) at test.main(test.java:8)

初学者请问关于Java GUI的问题

初学者求问,java里我定义了一个JFrame,给这个JFrame加入了13×9个JButton,然后把每个button传入一个图片组成一个地图。 但是我给这个JFrame传入新的信息时,不知道为什么地图界面确实把之前传入的信息覆盖掉了,但是鼠标移动到的button就会恢复到原来的样子,不知道是哪出现了问题。麻烦问一下各位大神 还有把JButton传入JPanel再把JPanel传入JFrame,如果把不同的panel传入到一个JFrame会发生覆盖吗 **这是第一个地图** ![这是第一个地图](https://img-ask.csdn.net/upload/201805/27/1527416731_85509.png) 然后我给这个JFrame传入新的参数,地图发生了变化![然后我给这个JFrame传入新的参数](https://img-ask.csdn.net/upload/201805/27/1527416777_528322.png) 比图一图二,发现鼠标移动到的按钮就会把图二中图片变成图一的,没对他进行点击或者其他任何操作,图片就变了,就是鼠标滑到哪,哪个按钮的图片就从图二的样子变成图一的样子了 ![然后对比图一图二,发现鼠标移动到的按钮就会把图二中图片变成图一的,没对他进行点击或者其他任何操作,图片就变了](https://img-ask.csdn.net/upload/201805/27/1527416881_311893.png)

Java GUI 填充图形怎么放大和缩小

``` public class myJFrame extends JFrame implements ActionListener { private JButton but1, but2, but; Container cp = this.getContentPane(); JPanel p = new JPanel(new FlowLayout(1, 5, 5)); public myJFrame() { super("彭杰的窗口"); but1 = new JButton("放大"); but2 = new JButton("缩小"); but1.addActionListener(this); but2.addActionListener(this); p.add(but1); p.add(but2); cp.add(p, BorderLayout.SOUTH); } public void paint(Graphics g) { super.paint(g); g.setColor(Color.green); g.fillOval(150, 150, 100, 100); } public void actionPerformed(ActionEvent e) { JButton but = new JButton(); but = (JButton) e.getSource(); if (but1 == but) { System.out.println("你点击了放大"); } if (but2 == but) { System.out.println("你点击了缩小"); } } } ```

菜鸟提问!java GUI编程,事件与事件监听的实现方法

用VE下一个登陆的界面,jButton的单击事件怎么监听啊?还有,在java GUI编程中,这个事件与事件监听到底有几种实现的模式啊?具体怎么实现啊?小弟先谢了!

java GUI 计算器代码

package cn.itcast.chapter11; import java.awt.*; //import java.awt.event.*; import javax.swing.*; public class Text{ public Text() { StringBuffer str;//要显示的字符串 JFrame jf=new JFrame("计算器");//创建一个窗口 jf.setSize(600,500); jf.setLocation(600,300); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setLayout(new BorderLayout()); JPanel jpanel1=new JPanel();//为按钮创建panel组件 JPanel jpanel2=new JPanel();//为文本框和CE键创建panel组件 JTextField jtf=new JTextField(45);//创建文本框 jtf.setEditable(false);//设置文本不可编辑 jpanel1.setLayout(new GridLayout(4,4)); JButton but1=new JButton("1");//创建按钮 JButton but2=new JButton("2"); JButton but3=new JButton("3"); JButton but10=new JButton("+"); JButton but4=new JButton("4"); JButton but5=new JButton("5"); JButton but6=new JButton("6"); JButton but11=new JButton("-"); JButton but7=new JButton("7"); JButton but8=new JButton("8"); JButton but9=new JButton("9"); JButton but12=new JButton("*"); JButton but16=new JButton("."); JButton but0=new JButton("0"); JButton but14=new JButton("="); JButton but13=new JButton("/"); JButton but15=new JButton("CE"); jpanel1.add(but1);//添加按钮 jpanel1.add(but2); jpanel1.add(but3); jpanel1.add(but10); jpanel1.add(but4); jpanel1.add(but5); jpanel1.add(but6); jpanel1.add(but11); jpanel1.add(but7); jpanel1.add(but8); jpanel1.add(but9); jpanel1.add(but12); jpanel1.add(but16); jpanel1.add(but0); jpanel1.add(but14); jpanel1.add(but13); jpanel2.add(jtf); jpanel2.add(but15); jf.add(jpanel2,BorderLayout.NORTH); jf.add(jpanel1,BorderLayout.CENTER); jf.setVisible(true); MyActionListener ac1=new MyActionListener(); but1.addActionListener(ac1);//添加动作监听器 } class MyActionListener implements ActionListener{ public void actionPerformed(ActionEvent e) { jtf.setText(e.getActionCommand()); } } public static void main(String[] args) { new Text(); } } 后面动作监听器那里错了,为什么,成员内部类不能继承java自己定义的类吗?

java GUI TextField问题

想在GUI的一个图形界面中写入队列的功能,完成入队和出队,用的是TextField,但是TextField的那个getText()方法能不能一个数据一个数据的读呢,用什么方法,可以一个一个读,入队

如何做JavaGUI桌面应用程序开发

有没有好的办法将JavaGUI程序打包成独立的桌面应用程序?

关于javaGUI组件update()方法

java问题:都说java swing组件中repaint()调用update(),update()调用paint(),我在继承自JFrame类里重写了update(),api里说重写update()应该在里面调用super.update()或直接在里面调用paint(),但我没有这样做,为什么在执行程序的时候却还是调用了paint()呢?求大神详细解答下

请问javaGUI界面有什么好办法能让整个界面刷新一下或者重构一下

如题,正在写课设的菜鸟希望能有好心人抽空解答一下,就是希望整个界面重新加载一下,因为某些参数更新了

java GUI编程函数执行顺序问题

import javax.swing.*; import java.awt.*; import java.io.IOException; import gui.ZJM; public class Bresenham extends JPanel { private int x0; private int y0; private int xEnd; private int yEnd; private boolean temp=false; void setyEnd(int i) { // TODO 自动生成的方法存根 yEnd=i; } void setxEnd(int i) { // TODO 自动生成的方法存根 xEnd=i; } void setY0(int i) { // TODO 自动生成的方法存根 y0=i; } void setX0(int i) { // TODO 自动生成的方法存根 x0=i; } //Graphics g=getGraphics(); @Override public void paintComponent(Graphics g) { //super.paintComponent(g); Graphics2D g2d = (Graphics2D)g; g2d.translate(getWidth() / 2, getHeight() / 2); g2d.scale(1, -1); g2d.drawLine(-400, 0, 400, 0); g2d.drawLine(0, -400, 0, 400); temp=true; //g2d.drawLine(x0, y0, xEnd, yEnd); //Bresline(); } public void setPixel(int x,int y){ Graphics g = getGraphics(); Graphics2D g2d = (Graphics2D)g; g2d.translate(getWidth() / 2, getHeight() / 2); g2d.scale(1, -1); g2d.setColor(Color.RED); g2d.fillOval(x,y,1,1); } static void createAndShowGUI(Bresenham a) { JFrame frame = new JFrame(); // Add your component. frame.setContentPane(a); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(700, 400); frame.setLocationRelativeTo(null); frame.setVisible(true); } public void Bresline(){ int dx=Math.abs(xEnd-x0),dy=Math.abs(yEnd-y0); int p=2*dy-dx; int twoDy=2*dy,twoDyMinusDx = 2*(dy-dx); int x,y; if(x0>xEnd) { x=xEnd; y=yEnd; xEnd=x0;} else { x=x0; y=y0; } setPixel(x,y); while(x<xEnd) { x++; if(p<0) p+=twoDy; else { y++; p+=twoDyMinusDx; } setPixel(x,y); try { Thread.currentThread().sleep(250); } catch(Exception e){} } } public void bresline(int x0,int y0,int xEnd,int yEnd) { Bresenham a = new Bresenham(); a.setX0(x0); a.setY0(y0); a.setxEnd(xEnd); a.setyEnd(yEnd); a.createAndShowGUI(a); a.Bresline(); } public static void main(String[] args) throws IOException { } } 问题1:为什么Bresline函数调用在画出坐标轴之前? 问题 2:如何修改才能在坐标轴上作图 补充:本意是想从另一个类中调用bresline(int,int,int,int)函数来实现作图,但测试的时候发现将x0,y0,yend,xend设为常数后从主函数调用bresline()函数就对了

Java GUI怎样实现刷新或切换页面的效果

请教一下大概思路。如果有例子就更好啦 具体就是更改数据后刷新页面或者点击按钮跳转到其他页面

初学者关于JAVA 设置控件的大小

老师布置的作业。。写一个模仿打电话的GUI。。。功能基本完成了 就是样子稍微有点不像 怎样调整文本框使?? 第一张图是我的,第二张图是老师给的图 谢谢 ![图片说明](https://img-ask.csdn.net/upload/201805/30/1527676879_11053.png) ![图片说明](https://img-ask.csdn.net/upload/201805/30/1527676889_909354.png)

java的Gui面板透明性问题

我在框架里设置了一个面板,为面板添加了背景图片,然后再在这个面板里添加另一个面板,该面板里存在几个按钮,但执行时只看到背景图片,按钮看不到,想知道为什么

请问javaGUI界面有什么好办法能让整个界面刷新一下或者重构一下n

如题,正在写课设的菜鸟希望能有好心人抽空解答一下,就是希望整个界面重新加载一下,因为某些参数更新了

关于用JAVA中用GUI做五子棋的小项目

[java学习ing——五子棋的制作(人人对战)](http://xiaoyjj.iteye.com/blog/1722304 "") 因为没怎么学习过,想通过做实际的小项目进行学习,我是照着这个博主的代码敲得,可是他这个代码不完全,我自己补充不了,有没有大神帮忙补充下的,万分感谢!

关于JAVA GUI线程编程运行时的一个小问题

在练习学校编程实验题遇到的小问题,代码如下: 要求【点击“向右走”按钮,标签“向右移标签”会向向右移动10次,每次移动10个单位。同理“向左走”按钮。】 我按照以下运行,却出现窗体无限生成的情况。 ![图片说明](https://img-ask.csdn.net/upload/201711/19/1511068100_583043.png) 定位确认是因为创建线程那几句导致的,删除就能正常显示窗体了。我想求教以下,我应该如何创建线程才不会出现这个问题呢(尽量利用Runnable接口实现)? 0.0 ``` public class JButton_Move{ JFrame jf=new JFrame(); JLabel jl1=new JLabel("向右移标签"); JLabel jl2=new JLabel("向左移标签"); JButton jb1=new JButton("向右走"); JButton jb2=new JButton("向左走"); int jl1_X=10; int jl2_X=200; public void init(){ jf.setSize(300,150); jf.setLayout(null); jf.add(jb1); jf.add(jb2); jf.add(jl1); jf.add(jl2); jb1.setBounds(50,100,80,20); jb2.setBounds(150,100,80,20); jl1.setBounds(jl1_X,30,80,20); jl2.setBounds(jl2_X,60,80,20); jf.setVisible(true); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } JButton_Move(){ init(); Thread t1=new Thread(new move()); t1.start(); } public static void main(String[] args){ JButton_Move jm=new JButton_Move(); } } class move extends JButton_Move implements Runnable{ public void run(){ jb1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { for(int i=0;i<10;i++){ try{ Thread.sleep(1000); jl1.setLocation(jl1_X+10,30); }catch (InterruptedException a){ System.out.println("error.."); } } } }); jb2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { for(int i=0;i<10;i++){ jl2.setLocation(jl2_X-10,60); } } }); } } ```

java的GUI中的计算器界面

package cn.itcast.chapter11; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Text{ public Text() { JFrame jf=new JFrame("加法器"); jf.setSize(600,500); jf.setLocation(600,300); jf.setVisible(true); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setLayout(new BorderLayout()); JPanel jpanel=new JPanel(); jpanel.setLayout(new GridLayout(2,3)); JButton but1=new JButton("0"); JButton but2=new JButton("1"); JButton but3=new JButton("2"); JButton but01=new JButton("+"); JButton but02=new JButton("="); jpanel.add(but1); jpanel.add(but2); jpanel.add(but3); jpanel.add(but01); jpanel.add(but02); JTextField jtf=new JTextField(); jf.add(jtf); jf.add(jpanel); jf.add(jtf,BorderLayout.NORTH); jf.add(jpanel,BorderLayout.CENTER); } public static void main(String[] args) { new Text(); } } 为什么界面自由一个窗口,我不是还创建了按钮和文本吗?

Java制作画图程序的GUI问题

做了一个基于工厂模式的画图程序,有一些bug,画图会出现一些乱七八糟的情况。。。百思不得其解,来求助各位。。。 父类Shape: ``` import java.awt.Graphics; public abstract class Shape { abstract void draw(Graphics g); } ``` Line类: ``` import java.awt.Graphics; import java.awt.Point; public class Line extends Shape { private Point start; private Point end; Line(Point start, Point end) { this.start = start; this.end = end; } @Override void draw(Graphics g) { g.drawLine(start.x, start.y, end.x, end.y); } } ``` Circle类: ``` import java.awt.Graphics; import java.awt.Point; public class Circle extends Shape { private Point start; private Point end; public Circle(Point start, Point end) { this.start = start; this.end = end; } @Override void draw(Graphics g) { g.drawOval(Math.min(start.x, end.x), Math.min(start.y, end.y), Math.max(Math.abs(start.x), Math.abs(start.y - end.y)), Math.max(Math.abs(start.x - end.x), Math.abs(start.y - end.y))); } } ``` Rect类: ``` import java.awt.Graphics; import java.awt.Point; public class Rect extends Shape { private Point start; private Point end; public Rect(Point start, Point end) { this.start = start; this.end = end; } @Override void draw(Graphics g) { g.drawRect(Math.min(start.x, end.x), Math.min(start.y, end.y), Math.abs(start.x - end.x), Math.abs(start.y - end.y)); } } ``` 工厂类: ``` import java.awt.Point; public class ShapeFactory { public static Shape creator(int choices, Point start, Point end) { if (choices == 1) return new Line(start, end); else if (choices == 2) return new Circle(start, end); else if (choices == 3) return new Rect(start, end); else return null; } } ``` 主类,这边把代码全贴上来,想运行的朋友可以运行一下: 有些功能还没写完整,比如保存之类。 目前思路是这样:在菜单上选择要画的图形,这时会给choices赋一个值,代表要画的图形。 在鼠标点下的时候记录初始坐标。 鼠标抬起时记录终止坐标,并添加一个图形对象到保存的Vector中,再进行重绘。 ``` import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.Graphics; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.Vector; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JToolBar; import javax.swing.UIManager; /** * @description 画图程序(以松耦合为目的,以工厂模式为实现方法) * @date 2016-11-19 */ /** * @description 窗口类,定义大小以及窗口形态 */ public class MyPaint extends JFrame { private static final long serialVersionUID = 1L; private DrawPanel drawingArea; private int width = 800, height = 600; public static int choices = 1; // Constructor public MyPaint() { super("Drawing Program"); /** * 定义菜单条的文件选项,设置四个选项分别为: * 新建、打开、保存以及退出 */ JToolBar buttonPanel; //按钮面板 JButton line, circle, rect; JMenuBar bar = new JMenuBar(); //菜单条 JMenu fileMenu = new JMenu("File"); // 新建 JMenuItem newItem = new JMenuItem("New"); newItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //如果被触发,则调用新建文件函数段 }}); fileMenu.add(newItem); // 保存 JMenuItem saveItem = new JMenuItem("Save"); saveItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { //如果被触发,则调用保存文件函数段 }}); fileMenu.add(saveItem); // 打开 JMenuItem loadItem = new JMenuItem("Load"); loadItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { //如果被触发,则调用打开文件函数段 }}); fileMenu.add(loadItem); // 设置分割线 & 退出 fileMenu.addSeparator(); JMenuItem exitItem = new JMenuItem("Exit"); exitItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); //如果被触发,则退出画图板程序 }}); fileMenu.add(exitItem); bar.add(fileMenu); /** * 定义菜单栏的帮助选项,对软件进行解释 */ JMenu helpMenu = new JMenu("Help"); JMenuItem aboutItem = new JMenuItem("About"); aboutItem.setMnemonic('A'); aboutItem.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { JOptionPane.showMessageDialog(null, "This is a mini drawing program", " 画图板程序说明 ", JOptionPane.INFORMATION_MESSAGE); }}); helpMenu.add(aboutItem); bar.add(helpMenu); /** * 按钮面板 */ buttonPanel = new JToolBar(JToolBar.HORIZONTAL); // 添加直线按钮以及点击事件 line = new JButton("Line"); line.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { repaint(); choices = 1; }}); // 添加圆按钮以及点击事件 circle = new JButton("Circle"); circle.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { repaint(); choices = 2; }}); // 添加矩形按钮以及点击事件 rect = new JButton("Rect"); rect.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { repaint(); choices = 3; }}); buttonPanel.add(line); buttonPanel.add(circle); buttonPanel.add(rect); setJMenuBar(bar); // 定义画图区域 drawingArea = new DrawPanel(); Container c = getContentPane(); // 添加控件 c.add(drawingArea, BorderLayout.CENTER); c.add(buttonPanel, BorderLayout.NORTH); // 设置窗口 setDefaultCloseOperation(EXIT_ON_CLOSE); setSize(width, height); setVisible(true); } /** * Main */ public static void main(String[] args) { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } new MyPaint(); } } /** * @description 画图面板类,提供鼠标监听器 * */ class DrawPanel extends JPanel implements MouseListener { private static final long serialVersionUID = 1L; // 用于保存图形 private Vector<Shape> shapes; // 用于记录鼠标画图时留下的两个点的坐标 private Point start = new Point(); private Point end = new Point(); // Constructor public DrawPanel() { shapes = new Vector<>(); setBackground(Color.white); this.addMouseListener(this); } @Override public void paintComponent(Graphics g) { super.paintComponent(g); for (int i = 0; i < shapes.size(); i++) { draw(g, shapes.elementAt(i)); } } void draw(Graphics g, Shape shape) { shape.draw(g); } @Override public void mouseClicked(MouseEvent e) { // do nothing here } @Override public void mouseEntered(MouseEvent e) { // do nothing here } @Override public void mouseExited(MouseEvent e) { // do nothing here } //按下鼠标时记录坐标点 @Override public void mousePressed(MouseEvent e) { start.x = e.getX(); start.y = e.getY(); } // 松开鼠标时记录坐标点并将图形画出来 @Override public void mouseReleased(MouseEvent e) { end.x = e.getX(); end.y = e.getY(); shapes.add(ShapeFactory.creator(MyPaint.choices, start, end)); repaint(); } } ```

java纯新手想提问下关于paint()的问题

各位大大好,我是跟着视频自学的java纯新手,在写的代码中出现了一些问题想请教一下 代码如下 import java.awt.Graphics; import java.awt.event.*; import java.awt.image.BufferedImage; import java.util.ArrayList; import java.util.List; import javax.swing.JFrame; public class myFrame extends JFrame implements KeyListener{ private List<background>allBG=new ArrayList<background>(); private background nowBG=null; public static void main(String args[]){ new myFrame(); } public myFrame(){ this.setTitle("马里奥游戏程序"); this.setSize(900,600); this.setLocationRelativeTo(null); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); this.setResizable(false); //初始化场景之前要初始化全部图片 StaticValue.init(); //创建全部场景 for(int i=1;i<=3;i++){ this.allBG.add(new background(i,i==3?true:false)); } //将第一个场景设置为当前场景 this.nowBG=this.allBG.get(0); //测试nowBG是否为空,非空 if(nowBG==null){ System.out.println("is null"); } else System.out.println("not null"); this.repaint(); this.addKeyListener(this); } public void paint (Graphics g){ //建立临时缓冲图片 BufferedImage image=new BufferedImage(900,600,BufferedImage.TYPE_3BYTE_BGR); Graphics g2=image.getGraphics(); if (nowBG!=null){ g2.drawImage(this.nowBG.getBgImage(),0,0,this); System.out.println("is not null"); } else System.out.println("is null"); //把图片绘制到窗体 g.drawImage(image,0,0,this); } @Override public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } @Override public void keyPressed(KeyEvent e) { char a=e.getKeyChar(); int b=e.getKeyCode(); System.out.println(a+" "+b); // TODO Auto-generated method stub } @Override public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub } } 显示出来的结果是 is null not null is not null 我想问一下paint()在什么时候被调用的?为什么被调用了两次?为什么paint()第一次被调用的时候nowBG没有被初始化。然后就是运行的时候如果去掉paint()里的if else判断直接调用g2.drawImage(this.nowBG.getBgImage(),0,0,this)会出现java.lang.NullPointerException这该如何解决

MySQL数据库面试题(2020最新版)

文章目录数据库基础知识为什么要使用数据库什么是SQL?什么是MySQL?数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4大特性存储引擎选择索引什么是索引?索引有哪些优缺点?索引使用场景(重点)...

人工智能-计算机视觉实战之路(必备算法+深度学习+项目实战)

系列课程主要分为3大阶段:(1)首先掌握计算机视觉必备算法原理,结合Opencv进行学习与练手,通过实际视项目进行案例应用展示。(2)进军当下最火的深度学习进行视觉任务实战,掌握深度学习中必备算法原理与网络模型架构。(3)结合经典深度学习框架与实战项目进行实战,基于真实数据集展开业务分析与建模实战。整体风格通俗易懂,项目驱动学习与就业面试。 建议同学们按照下列顺序来进行学习:1.Python入门视频课程 2.Opencv计算机视觉实战(Python版) 3.深度学习框架-PyTorch实战/人工智能框架实战精讲:Keras项目 4.Python-深度学习-物体检测实战 5.后续实战课程按照自己喜好选择就可以

linux2.6.1内核源码注释

包含LINUX内核同步、信号、内存、调度、文件系统、网络系统、时钟等部分的源码注释。前后历时三年,算是干货。

Python可以这样学(第四季:数据分析与科学计算可视化)

董付国老师系列教材《Python程序设计(第2版)》(ISBN:9787302436515)、《Python可以这样学》(ISBN:9787302456469)配套视频,在教材基础上又增加了大量内容,通过实例讲解numpy、scipy、pandas、statistics、matplotlib等标准库和扩展库用法。

u-boot-2015.07.tar.bz2

uboot-2015-07最新代码,喜欢的朋友请拿去

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

MySQL 8.0.19安装教程(windows 64位)

话不多说直接开干 目录 1-先去官网下载点击的MySQL的下载​ 2-配置初始化的my.ini文件的文件 3-初始化MySQL 4-安装MySQL服务 + 启动MySQL 服务 5-连接MySQL + 修改密码 先去官网下载点击的MySQL的下载 下载完成后解压 解压完是这个样子 配置初始化的my.ini文件的文件 ...

零基础学C#编程—C#从小白到大咖

本课程从初学者角度出发,提供了C#从入门到成为程序开发高手所需要掌握的各方面知识和技术。 【课程特点】 1 由浅入深,编排合理; 2 视频讲解,精彩详尽; 3 丰富实例,轻松易学; 4 每章总结配有难点解析文档。 15大章节,228课时,1756分钟与你一同进步!

微信公众平台开发入门

本套课程的设计完全是为初学者量身打造,课程内容由浅入深,课程讲解通俗易懂,代码实现简洁清晰。通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有什么特点,它能做什么,怎么开发公众号。 其次,通过本课程的学习,学员能够掌握微信公众平台开发的方法、技术和应用实现。例如,开发者文档怎么看,开发环境怎么搭建,基本的消息交互如何实现,常用的方法技巧有哪些,真实应用怎么开发。

java jdk 8 帮助文档 中文 文档 chm 谷歌翻译

JDK1.8 API 中文谷歌翻译版 java帮助文档 JDK API java 帮助文档 谷歌翻译 JDK1.8 API 中文 谷歌翻译版 java帮助文档 Java最新帮助文档 本帮助文档是使用谷

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

编程实现学生基本信息管理程序

编程实现学生基本信息管理程序。学生基本信息包括:学号、姓名、性别、年龄、班级、学院、专业等。具体实现的管理功能如下: (1) 输入并显示多个学生的基本信息; (2) 可根据需要实现学生信息的添加; (

机器学习实战系列套餐(必备基础+经典算法+案例实战)

机器学习实战系列套餐以实战为出发点,帮助同学们快速掌握机器学习领域必备经典算法原理并结合Python工具包进行实战应用。建议学习顺序:1.Python必备工具包:掌握实战工具 2.机器学习算法与实战应用:数学原理与应用方法都是必备技能 3.数据挖掘实战:通过真实数据集进行项目实战。按照下列课程顺序学习即可! 课程风格通俗易懂,用最接地气的方式带领大家轻松进军机器学习!提供所有课程代码,PPT与实战数据,有任何问题欢迎随时与我讨论。

YOLOv3目标检测实战:训练自己的数据集

YOLOv3是一种基于深度学习的端到端实时目标检测方法,以速度快见长。本课程将手把手地教大家使用labelImg标注和使用YOLOv3训练自己的数据集。课程分为三个小项目:足球目标检测(单目标检测)、梅西目标检测(单目标检测)、足球和梅西同时目标检测(两目标检测)。 本课程的YOLOv3使用Darknet,在Ubuntu系统上做项目演示。包括:安装Darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 Darknet是使用C语言实现的轻型开源深度学习框架,依赖少,可移植性好,值得深入探究。 除本课程《YOLOv3目标检测实战:训练自己的数据集》外,本人推出了有关YOLOv3目标检测的系列课程,请持续关注该系列的其它课程视频,包括: 《YOLOv3目标检测实战:交通标志识别》 《YOLOv3目标检测:原理与源码解析》 《YOLOv3目标检测:网络模型改进方法》 敬请关注并选择学习!

Python+OpenCV计算机视觉

Python+OpenCV计算机视觉系统全面的介绍。

土豆浏览器

土豆浏览器可以用来看各种搞笑、电影、电视剧视频

大三实习生,字节跳动面经分享,已拿Offer

说实话,自己的算法,我一个不会,太难了吧

玩转Linux:常用命令实例指南

人工智能、物联网、大数据时代,Linux正有着一统天下的趋势,几乎每个程序员岗位,都要求掌握Linux。本课程零基础也能轻松入门。 本课程以简洁易懂的语言手把手教你系统掌握日常所需的Linux知识,每个知识点都会配合案例实战让你融汇贯通。课程通俗易懂,简洁流畅,适合0基础以及对Linux掌握不熟练的人学习; 【限时福利】 1)购课后按提示添加小助手,进答疑群,还可获得价值300元的编程大礼包! 2)本月购买此套餐加入老师答疑交流群,可参加老师的免费分享活动,学习最新技术项目经验。 --------------------------------------------------------------- 29元=掌握Linux必修知识+社群答疑+讲师社群分享会+700元编程礼包。 &nbsp;

基于STM32的电子时钟设计

时钟功能 还有闹钟功能,温湿度功能,整点报时功能 你值得拥有

Python数据清洗实战入门

本次课程主要以真实的电商数据为基础,通过Python详细的介绍了数据分析中的数据清洗阶段各种技巧和方法。

Git 实用技巧

这几年越来越多的开发团队使用了Git,掌握Git的使用已经越来越重要,已经是一个开发者必备的一项技能;但很多人在刚开始学习Git的时候会遇到很多疑问,比如之前使用过SVN的开发者想不通Git提交代码为什么需要先commit然后再去push,而不是一条命令一次性搞定; 更多的开发者对Git已经入门,不过在遇到一些代码冲突、需要恢复Git代码时候就不知所措,这个时候哪些对 Git掌握得比较好的少数人,就像团队中的神一样,在队友遇到 Git 相关的问题的时候用各种流利的操作来帮助队友于水火。 我去年刚加入新团队,发现一些同事对Git的常规操作没太大问题,但对Git的理解还是比较生疏,比如说分支和分支之间的关联关系、合并代码时候的冲突解决、提交代码前未拉取新代码导致冲突问题的处理等,我在协助处理这些问题的时候也记录各种问题的解决办法,希望整理后通过教程帮助到更多对Git操作进阶的开发者。 本期教程学习方法分为“掌握基础——稳步进阶——熟悉协作”三个层次。从掌握基础的 Git的推送和拉取开始,以案例进行演示,分析每一个步骤的操作方式和原理,从理解Git 工具的操作到学会代码存储结构、演示不同场景下Git遇到问题的不同处理方案。循序渐进让同学们掌握Git工具在团队协作中的整体协作流程。 在教程中会通过大量案例进行分析,案例会模拟在工作中遇到的问题,从最基础的代码提交和拉取、代码冲突解决、代码仓库的数据维护、Git服务端搭建等。为了让同学们容易理解,对Git简单易懂,文章中详细记录了详细的操作步骤,提供大量演示截图和解析。在教程的最后部分,会从提升团队整体效率的角度对Git工具进行讲解,包括规范操作、Gitlab的搭建、钩子事件的应用等。 为了让同学们可以利用碎片化时间来灵活学习,在教程文章中大程度降低了上下文的依赖,让大家可以在工作之余进行学习与实战,并同时掌握里面涉及的Git不常见操作的相关知识,理解Git工具在工作遇到的问题解决思路和方法,相信一定会对大家的前端技能进阶大有帮助。

计算机组成原理算法实现

计算机组成原理算法实现,能够实现定点小数的机器数表示、定点小数的变形补码加减运算、定点小数的原码一位乘法运算和浮点数的加减运算。

为linux系统设计一个简单的二级文件系统

实验目的: 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。 实验要求: 为linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条)

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

机器学习初学者必会的案例精讲

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

本课程适合CCNA或HCNA网络小白同志,高手请绕道,可以直接学习进价课程。通过本预科课程的学习,为学习网络工程师、思科CCNA、华为HCNA这些认证打下坚实的基础! 重要!思科认证2020年2月24日起,已启用新版认证和考试,包括题库都会更新,由于疫情原因,请关注官网和本地考点信息。题库网络上很容易下载到。

2019全国大学生数学建模竞赛C题原版优秀论文

2019全国大学生数学建模竞赛C题原版优秀论文,PDF原版论文,不是图片合成的,是可编辑的文字版。共三篇。 C044.pdf C137.pdf C308.pdf

土豆SDK(Java版)-非官方

由于土豆SDK一直建设中,最近几天抽空写了一套java的SDK。包含了现有的所有请求协议。本套SDK中仅提供了oAuth的方式(引用oAuth.net的java版示例),并没有在框架中实现,涉及到登录

Android小项目——新闻APP(源码)

Android小项目——新闻APP(源码),一个很简单的可以练手的Android Demo Ps:下载之前可以先看一下这篇文章——https://blog.csdn.net/qq_34149526/a

实用主义学Python(小白也容易上手的Python实用案例)

原价169,限时立减100元! 系统掌握Python核心语法16点,轻松应对工作中80%以上的Python使用场景! 69元=72讲+源码+社群答疑+讲师社群分享会&nbsp; 【哪些人适合学习这门课程?】 1)大学生,平时只学习了Python理论,并未接触Python实战问题; 2)对Python实用技能掌握薄弱的人,自动化、爬虫、数据分析能让你快速提高工作效率; 3)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; 4)想修炼更好的编程内功,优秀的工程师肯定不能只会一门语言,Python语言功能强大、使用高效、简单易学。 【超实用技能】 从零开始 自动生成工作周报 职场升级 豆瓣电影数据爬取 实用案例 奥运冠军数据分析 自动化办公:通过Python自动化分析Excel数据并自动操作Word文档,最终获得一份基于Excel表格的数据分析报告。 豆瓣电影爬虫:通过Python自动爬取豆瓣电影信息并将电影图片保存到本地。 奥运会数据分析实战 简介:通过Python分析120年间奥运会的数据,从不同角度入手分析,从而得出一些有趣的结论。 【超人气老师】 二两 中国人工智能协会高级会员 生成对抗神经网络研究者 《深入浅出生成对抗网络:原理剖析与TensorFlow实现》一书作者 阿里云大学云学院导师 前大型游戏公司后端工程师 【超丰富实用案例】 0)图片背景去除案例 1)自动生成工作周报案例 2)豆瓣电影数据爬取案例 3)奥运会数据分析案例 4)自动处理邮件案例 5)github信息爬取/更新提醒案例 6)B站百大UP信息爬取与分析案例 7)构建自己的论文网站案例

相关热词 c#跨线程停止timer c#批量写入sql数据库 c# 自动安装浏览器 c#语言基础考试题 c# 偏移量打印是什么 c# 绘制曲线图 c#框体中的退出函数 c# 按钮透明背景 c# idl 混编出错 c#在位置0处没有任何行
立即提问