当前位置: 首页 > 面试题库 >

JComponent大小问题

咸皓
2023-03-14
问题内容

我有一个JComponent子类,正在使用它在屏幕上绘制形状。在构造函数中,我试图将ballXballYXY
大小值设置为一半JComponent,并且我认为做错了。我已经对此进行了很多查找,但找不到补救措施。代码如下。请记住,这是我第一次真正的Swing /
Graphics2D创业。

public class PongCanvas extends JComponent {
//Vars to hold XY values and Dimension values.

    private int batXDim, batYDim;
    private int b1X, b1Y;
    private int b2X, b2Y;
    private int ballRad, ballX, ballY;

    public PongCanvas() {//Instantiate vars.
        batXDim = 20;
        batYDim = 100;

        b1X = 0;
        b1Y = 0;

        b2X = 0;
        b2Y = 0;

        ballRad = 20;
        ballX = getWidth() / 2;
        ballY = getHeight() / 2;
    }

    public void paint(Graphics g) {//Main paint Method.
        //Cast Graphics to Graphics2D.
        Graphics2D g2 = (Graphics2D) g;
        //Enable antialiasing.
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                RenderingHints.VALUE_ANTIALIAS_ON);
        //Draw background.
        g2.setPaint(Color.black);
        g2.fillRect(0, 0, getWidth(), getHeight());
        //Draw ball.
        g2.setPaint(Color.white);
        g2.fillOval(ballX, ballY, ballRad, ballRad);
        //Draw bat 1.
        g2.fillRect(b1X, b1Y, batXDim, batYDim);
        //Draw bat 2.
        g2.fillRect(b2X, b2Y, batXDim, batYDim);
    }
}

问题答案:

覆盖getPreferredSize()JComponent以返回您的首选大小,并从其宽度和高度的一半开始Dimension。为此,它在中KineticModel调用。setPreferredSize()DisplayPanel

附录:通过解释,当前的方法失败,因为从结果getWidth()getHeight()无效的 ,直到
validate()被称为封闭容器上,通常作为的结果pack()



 类似资料:
  • 问题内容: 我知道这样的事实,当我创建JComponent的实例时,它具有自己的首选大小。现在,我们假设我手动设置了JComponent的PreferredSize,尺寸为0 x0。我希望该Component“重置”其自己的preferredSize。我怎么做? 问题答案: 1)将首选大小设置为null可以将组件重置为重新计算其首选大小,就像从未设置过一样。 这可能并不能满足您的要求,具体取决于您

  • 介绍 (Introduction) 类JComponent是除顶级容器之外的所有Swing组件的基类。 要使用从JComponent继承的组件,必须将组件放在其根是顶级SWING容器的包含层次结构中。 Class 声明 (Class Declaration) 以下是javax.swing.JComponent类的声明 - public abstract class JComponent ex

  • 主要内容:1 Java JComponent的介绍,2 Java JComponent的字段,3 Java JComponent的构造方法,4 Java JComponent的方法,5 Java JComponent的案例1 Java JComponent的介绍 JComponent类是除顶层容器之外的所有Swing组件的基类。名称以“ J”开头的Swing组件是JComponent类的后代。例如,JButton,JScrollPane,JPanel,JTable等。但是,JFrame和JDia

  • 有人知道如何保持窗户的大小吗?如你所见,每当我选择一个文件,文件路径将改变GUI大小: 我不确定你是否能看到GUI的图像,但是路径字符串只会使窗口变宽。 我将把下面的代码留给你。我遇到问题的框架是“file_Frame=tk.LabelFrame(root,text=“Open file”,padx=6,pady=6,bg=“Gainsboro”)”之一

  • 我到处寻找修复代码的答案,但在花了很长时间调试代码后,我发现自己陷入了绝望。问题是,我的minimax函数不会为可能的最佳移动返回正确的值,我甚至试图通过存储最佳的第一个移动(当深度=0时)来修复它,但如果解决方案不明显,那么该算法将严重失败。我还尝试修改基本案例的返回值,以便优先考虑早期的胜利,但这并没有解决问题。 目前我正在TictoE板上测试这个函数,助手类(如getMoves()或getW

  • 因此,我在使用继承JComponent的一个名为装饰的对象进行鼠标检测时遇到了问题,我正在使用java进行鼠标点击。awt。事件MouseEvent。 我和我的团队最好的解决方案是比较每个装饰品与鼠标的距离,如果它小于50(这是装饰品的半径),它会做些什么。 我所遇到的问题是,它根本无法正常工作。我多次点击同一个点,最终它会在其中一个装饰物上触发事件。它的随机性和混乱性。 这是装饰课 我的整个方法