我直接从书上抄了这些例子。代码应该在JFrame上绘制一些东西,但没有显示任何东西(除了JFrame),这里是带有main方法的类
import java.awt.BorderLayout;
import javax.swing.JFrame;
public class JavaApplication24 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
JFrame frame = new JFrame("Window");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(480,270);
frame.setVisible(true);
NewClass panel = new NewClass();
frame.add(BorderLayout.CENTER, panel);
}
下面是JPanel的一个子类
import java.awt.Graphics;
import java.awt.Color;
import javax.swing.JPanel;
public class NewClass extends JPanel {
@Override
public void paintComponent(Graphics g){
g.setColor(Color.BLUE);
g.fillRect(0,0,100,100);
g.setColor(Color.GREEN);
g.drawRect(50,50,100,100);
g.setColor(Color.RED);
g.drawString("Hello",200,200);
g.setColor(Color.RED);
g.fillOval(240,40,100,30);
}
}
您的newclass
应该提供大小调整提示,布局管理器(在本例中为borderlayout
)可以决定如何最好地布局组件。
在进行任何自定义绘制之前,还应该调用super.paintcomponent
,否则将导致呈现工件的结束
public class NewClass extends JPanel {
@Override
public Dimension getPreferredSize() {
return new Dimension(400, 400);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.BLUE);
g.fillRect(0, 0, 100, 100);
g.setColor(Color.GREEN);
g.drawRect(50, 50, 100, 100);
g.setColor(Color.RED);
g.drawString("Hello", 200, 200);
g.setColor(Color.RED);
g.fillOval(240, 40, 100, 30);
}
}
我直接从书上抄了例子
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new NewClass());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
frame.setVisible(true);
NewClass panel = new NewClass();
frame.add(BorderLayout.CENTER, panel);
NewClass panel = new NewClass();
frame.add(BorderLayout.CENTER, panel);
frame.setVisible(true);
我知道同样的问题已经被问过很多次了,但是我似乎真的没有在我的代码中发现阻碍JPanel类型的对象显示在JFrame中的错误。下面是扩展JFrame的类的构造函数: 当我运行main方法(这里没有显示)时,它只显示框架和按钮。如果有人能在这方面给点提示,我会非常感谢的。
问题内容: 我有一个JFrame根据您单击的MenuItem显示JPanels。它可以工作,但是现在我需要在将JPanel添加到框架中并显示 它之后调用一个方法(因为我在该面板内使用JFreeChart,并且必须在可见JPanel时调用): 看起来还好吗?是被真出?似乎不是: 这是不工作(被 抛出异常)。这意味着 在调用repaint时,JPanel不可见,我已经测试了以下内容: 现在它可以正常工
问题内容: 有人可以告诉我为什么组合框不显示吗?我有一个控制器: 和一个观点 由于TestController中的 setLayout(null) ,我看不到comboBox。如果我将 add(cgView.comboBox)添加 到TestContoller()中,则它看起来像这样: 比我能看到的。有人可以告诉为什么吗? 因此,我的解决方案是始终将组件添加到TestController中,或通过
我有一个扩展JFrame的类。它使用以下代码将180个图像加载到数组中 更新:我尝试使用一个JLabel而不是我的ImagePanel类。JLabel似乎也有同样的问题。当我使用JPEG时,它会显示,但当我使用PNG时,它什么也不显示。
问题内容: 在JPanel上显示jpg图像(从本地文件夹加载)的最合适的图像类型是什么? 干杯。 问题答案:
问题内容: 这是一个非常简单的程序,我已尽力而为,但JPanel并未提供背景图片。我只希望面板上有一个简单的背景图像。 这是我的代码: 提前致谢 问题答案: 更换 与