没有获得java程序的输出

时间:2016-06-23 08:01:28

标签: java

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()方法 不工作它不是绘制整个屏幕只是在屏幕中间画了一个小矩形。这段代码中的问题是什么

4 个答案:

答案 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



    }