Java JFrame窗口中的矩形
所以我尝试使用JFrame将Rectangle2D.Float放在窗口中,但当我编译代码时,我得到的是没有矩形的空白窗口。你们能看看,告诉我我做错了什么吗Java JFrame窗口中的矩形,java,swing,jframe,Java,Swing,Jframe,所以我尝试使用JFrame将Rectangle2D.Float放在窗口中,但当我编译代码时,我得到的是没有矩形的空白窗口。你们能看看,告诉我我做错了什么吗 package zestaw8; import javax.swing.*; import java.awt.*; import java.awt.geom.*; class Plansza85 extends JPanel { Shape figura; Plansza85(Shape figura)
package zestaw8;
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
class Plansza85 extends JPanel
{
Shape figura;
Plansza85(Shape figura)
{
this.figura=figura;
}
}
public class Zestaw8_cw85
{
public static void main(String[] args)
{
Shape obj1;
obj1=new Rectangle2D.Float(100,100,140,140);
zestaw8.Plansza85 p;
p=new zestaw8.Plansza85(obj1);
JFrame jf=new JFrame();
jf.setTitle("Plansza p");
jf.setSize(400,400);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setVisible(true);
jf.add(p);
}
}
您需要覆盖
Plansza85
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
class Plansza85 extends JPanel {
private Shape figura;
Plansza85(Shape figura) {
this.figura = figura;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.draw(figura);
}
}
public class Zestaw8_cw85 {
public static void main(String[] args) {
Shape obj1;
obj1 = new Rectangle2D.Float(100, 100, 140, 140);
Plansza85 p;
p = new Plansza85(obj1);
JFrame jf = new JFrame();
jf.setTitle("Plansza p");
jf.setSize(400, 400);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.add(p);
jf.setVisible(true);
}
}
希望能有所帮助您需要覆盖
Plansza85的paintComponent
方法
import javax.swing.*;
import java.awt.*;
import java.awt.geom.*;
class Plansza85 extends JPanel {
private Shape figura;
Plansza85(Shape figura) {
this.figura = figura;
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D) g;
g2.draw(figura);
}
}
public class Zestaw8_cw85 {
public static void main(String[] args) {
Shape obj1;
obj1 = new Rectangle2D.Float(100, 100, 140, 140);
Plansza85 p;
p = new Plansza85(obj1);
JFrame jf = new JFrame();
jf.setTitle("Plansza p");
jf.setSize(400, 400);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.add(p);
jf.setVisible(true);
}
}
希望能有所帮助你似乎误解了绘画是如何在摇摆中进行的
从看开始,然后Rectangle2D
是一种图形原语,需要通过正常的自定义绘制过程进行绘制
根据的常见建议,您应该覆盖Plansza85
的paintComponent
方法,并通过Graphics2D
API绘制Shape
,类似于
比如说
我还重写了getPreferredSize
方法,根据形状的大小为组件生成适当的大小提示,我之所以这样做是因为我不喜欢猜测工作,而且窗口还包括可变大小的边框和标题栏,如果您只依赖setSize
的话,它们会改变面板的大小。您似乎对Swing中的绘画工作有误解
从看开始,然后Rectangle2D
是一种图形原语,需要通过正常的自定义绘制过程进行绘制
根据的常见建议,您应该覆盖Plansza85
的paintComponent
方法,并通过Graphics2D
API绘制Shape
,类似于
比如说
我还重写了getPreferredSize
方法,根据形状的大小为组件生成适当的大小提示,我之所以这样做是因为我不喜欢猜测工作,而且窗口还包括可变大小的边框和标题栏,如果您仅依赖setSize
交换最后两个命令,则这些边框和标题栏将改变面板的大小,将setVisible()
放在最后。您可能希望从查看和开始Rectangle2D
是一种图形原语,需要通过正常的绘制自定义绘制过程绘制。将最后两个命令调换为将setVisible()
放在最后。您可能需要从查看和开始Rectangle2D
是一个图形原语,需要通过正常的绘制自定义绘制过程绘制此Rectangle bounds=this.figura.getBounds();g、 drawRect((int)bounds.getX(),(int)bounds.getY(),(int)bounds.getWidth(),(int)bounds.getHeight())代码>最好替换为Graphics2D g2=(Graphics2D)g;g2.绘制(图A)代码>。它不仅更短,而且如果规范将来更改为包含椭圆或多边形,它将按预期工作!对答案进行编辑要比同意我是正确的更有成效@AndrewThompson我会的,我正在使用stackoverflow移动应用程序。给出一个小时:-)thisRectangle bounds=this.figura.getBounds();g、 drawRect((int)bounds.getX(),(int)bounds.getY(),(int)bounds.getWidth(),(int)bounds.getHeight())代码>最好替换为Graphics2D g2=(Graphics2D)g;g2.绘制(图A)代码>。它不仅更短,而且如果规范将来更改为包含椭圆或多边形,它将按预期工作!对答案进行编辑要比同意我是正确的更有成效@AndrewThompson我会的,我正在使用stackoverflow移动应用程序。给一个小时:-)