0

我的课本中有这个练习:

在本练习中,您将探索一种可视化 Rectangle 对象的简单方法。JFrame 类的 setBounds 方法将框架窗口移动到给定的矩形。完成以下程序,直观地展示 Rectangle 类的 translate 方法:

import java.awt.Rectangle;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class TranslateDemo
{
public static void main(String[] args)
{
// Construct a frame and show it
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
// Your work goes here: Construct a rectangle and set the frame bounds
JOptionPane.showMessageDialog(frame, "Click OK to continue");
// Your work goes here: Move the rectangle and set the frame bounds again
}
}****

我试过这个,但它不工作:

**import java.awt.Rectangle;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class TranslateDemo
{
    public static void main(String[] args)
    {
        // Construct a frame and show it
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
        // Your work goes here: Construct a rectangle and set the frame bounds

        Rectangle box = new Rectangle(10, 20, 30, 40);
        System.out.println("");
        System.out.println(box);
        System.out.println("");

        JFrame f=new JFrame();
        f.setBounds(50, 50, 200 ,200);


        JOptionPane.showMessageDialog(frame, "Click OK to continue");
        // Your work goes here: Move the rectangle and set the frame bounds again
        box.translate(0,30);
        System.out.println(box);
        JOptionPane.showMessageDialog(frame, "Click OK to continue");
    }
}**

你能帮我么 ?

4

1 回答 1

2

让我们从您创建了两个JFrame...的实例开始。

// First instance
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
// Your work goes here: Construct a rectangle and set the frame bounds

// Second instance
JFrame f=new JFrame();
f.setBounds(50, 50, 200 ,200);

第一个是屏幕上可见的内容,第二个不是。

也许像...

JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
// Your work goes here: Construct a rectangle and set the frame bounds

Rectangle box = new Rectangle(10, 20, 30, 40);
f.setBounds(box);

会工作得更好。

您所做的任何更改box都不会更改框架,因为JFrame使用 的属性Rectangle来设置其属性并且不维护对原始的引用Rectangle,相反,您需要setBounds再次调用以更新框架

不过,作为一般规则,您不应该设置框架本身的大小,而是依赖pack,但由于这是一个练习,我可以忽略它;)

于 2016-02-20T04:55:50.490 回答