有一个我以前从未遇到过的非常简单的问题。我以前在做一个项目时使用过类似的布局。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
class q1
{
public static void main (String Args [])
{
q1Window showMe = new q1Window();
}
}
class q1Window
{
q1Window()
{
JFrame window = new JFrame("Tutorial 1");
window.setSize(600,600);
window.setVisible(true);
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void paint (Graphics back)
{
back.setColor(Color.black);
back.fillRect(30,30,100,200);
}
}
现在,无论JFrame显示什么,我似乎都无法打印任何内容。
不能只向任何类添加paint()方法。只有Swing零部件具有绘制方法。
阅读Swing教程中关于自定义绘制的部分,了解更多信息和工作示例。
快速总结是,您需要覆盖JPanel的paintComponent()
方法,然后将面板添加到框架中。
正如camickr所指出的,您需要一个Swing组件来执行您想要的操作,在这种情况下,就是覆盖paint()
,尽管您应该覆盖paintComponent()
。
试试这个:
class q1 {
public static void main(String Args[]) {
q1Window showMe = new q1Window();
}
}
class q1Window extends JFrame {
q1Window() {
setTitle("Tutorial 1");
setSize(600, 600);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void paint(Graphics back) {
back.setColor(Color.black);
back.fillRect(30, 30, 100, 200);
}
}