package com.gautam.notepad;
import javax.swing.*;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.Graphics;
public class main {
public static void main(String[] args) {
panel1 p =new panel1(); // This is the panel1 class object
new App("NOTEPAD",p); // i'm trying to pass panel1 object
}
}
class App extends JFrame {
public App(String title,panel1 panel)
{
this.setTitle(title);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
this.setLocationRelativeTo(null);
this.setSize(800, 640);
this.setLayout(new FlowLayout());
this.add(panel);
this.setResizable(false);
}
}
class panel1 extends JPanel{
public void paintComponent(Graphics g)
{
g.setColor(Color.green);
g.fillRect(0, 0, this.getWidth(), this.getHeight());
}
}
它工作正常但在paintcomponent方法中它是g.fillRect()方法 不工作它不是绘制整个屏幕只是在屏幕中间画了一个小矩形。这段代码中的问题是什么
答案 0 :(得分:1)
您在第this.setLayout(new FlowLayout());
行遇到问题,只需删除它即可。默认情况下,它将使用您需要的BorderLayout。
答案 1 :(得分:0)
这将有效
import javax.swing.*;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
public class NotePad {
public static void main(String[] args) {
App app = new App("NOTEPAD");
app.getContentPane().setBackground(Color.green);
}
}
class App extends JFrame {
public App(String title)
{
this.setTitle(title);
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setVisible(true);
this.setLocationRelativeTo(null);
this.setSize(800, 640);
this.setLayout(new FlowLayout());
//this.add(panel);
this.setResizable(false);
}
}
答案 2 :(得分:0)
问题与您选择的布局有关。请查看此https://docs.oracle.com/javase/tutorial/uiswing/layout/visual.html#flow以查看不同的布局以及如何使用它们。
例如,如果您将this.setLayout(new FlowLayout());
更改为this.setLayout(new BorderLayout());
,它应该可以正常工作
答案 3 :(得分:0)
好的Flowlayout()
获得了它自己的大小,如果您希望仍然可以使用flowlayout()
而且恰好从Flowlayout()
得到的那么小。控制您的绿色矩形的尺寸比我建议使用面板上的setPreferredSize()
方法,这将消除此问题并保留您的FlowLayout
。
public static void main(String[] args) {
panel1 p =new panel1(); // This is the panel1 class object
Dimension size= new Dimension(800, 640);//here you can add the size you want
p.setPreferredSize(size);
new App("NOTEPAD",p); // i'm trying to pass panel1 object
}