Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.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
Mac OS X Java最初并不绘制_Java_Swing - Fatal编程技术网

Mac OS X Java最初并不绘制

Mac OS X Java最初并不绘制,java,swing,Java,Swing,尝试在Java上使用基本swing一直给我带来问题。 当运行时创建JFrame时,最初不会绘制任何组件,您必须调整窗口大小才能调用paint?有没有一个简单的解决办法,我错过了 import javax.swing.*; import java.awt.event.*; import java.awt.*; public class LabTen extends JFrame{ int x, y; public LabTen(){ this.setSize(

尝试在Java上使用基本swing一直给我带来问题。 当运行时创建JFrame时,最初不会绘制任何组件,您必须调整窗口大小才能调用paint?有没有一个简单的解决办法,我错过了

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

public class LabTen extends JFrame{

    int x, y;

    public LabTen(){
        this.setSize(200,200);
        this.setVisible(true);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.getContentPane().add(new Board()); //do this in the constructor    
    }

    public static void main(String[] args){
        LabTen one = new LabTen();
        one.repaint();
    }       
}
//mouseListener has more things when we're going in and out so you should have it too
//write on the component or pannel, not the frame
class Board extends JComponent implements MouseListener, MouseMotionListener{

    int mouseX, mouseY;

    public Board(){
        addMouseListener(this);
        addMouseMotionListener(this);
    }

    public void mouseMoved(MouseEvent e){           
        this.mouseX = e.getX();
        this.mouseY = e.getY();
        this.repaint(); 
    }

    public void mouseDragged(MouseEvent e){
        //do nothing...
    }

    public void mouseClicked(MouseEvent e){         
    }

    public void mouseEntered(MouseEvent e){         
    }

    public void mouseExited(MouseEvent e){
    }

    public void mousePressed(MouseEvent e){         
    }

    public void mouseReleased(MouseEvent e){
    }

    public void paintComponent(Graphics g){
        //g.drawString("(" + this.mouseX + ", " + this.mouseY +  ")", this.mouseX,this.mouseY);
        //this uses the default way
        // g.drawLine(this.getWidth()/2, this.getHeight()/2, this.mouseX, this.mouseY);

        double distance = Math.sqrt(Math.pow(this.mouseX - this.getWidth()/2, 2) + Math.pow(this.mouseY - this.getHeight()/2, 2));          
        int centerX = this.getWidth()/2;
        int centerY = this.getHeight()/2;

        for(int i = 0; i < 20; i++){
            double distanceX = 
            g.drawLine(centerX, centerY, (centerX))
        }           
    }
}

你完全是按错误的顺序做的。这样做:

添加组件

this.add(new Board());
设置首选大小

this.setPreferredSize(new Dimension(200, 200));
装好架子

this.pack();
将框架设置为可见

this.setVisible(true);

当然,这是你的JFrame。

你完全按照错误的顺序来做。这样做:

添加组件

this.add(new Board());
设置首选大小

this.setPreferredSize(new Dimension(200, 200));
装好架子

this.pack();
将框架设置为可见

this.setVisible(true);

当然,这是您的JFrame。

设置好JFrame后,应调用JFrame.pack和JFrame.setVisibletrue。

设置好JFrame后,您应该调用jFrame.pack和jFrame.setVisibletrue。

在实现之前,所有组件都需要添加到容器中。

在实现之前,所有组件都需要添加到容器中。

作为旁注,它在windows下工作,在X11转发下作为旁注,它在windows和X11转发下工作,这比我想象的要容易得多。我的教授在windows的课堂上做他的代码示例,显然oracles版本的java并不关心您何时添加组件。谢谢这比我想象的要容易得多。我的教授在windows的课堂上做他的代码示例,显然oracles版本的java并不关心您何时添加组件。谢谢