谁能告诉我这到底是怎么回事?我对 Java 还很陌生,我似乎不明白为什么这不会打开 JPanel 或矩形或字符串。没有显示任何内容,但它确实可以编译。
代码:
import java.awt.*;
import javax.swing.*;
public class Graphing extends JPanel
{
public static void main (String[] args)
{
}
public Graphing()
{
JFrame frame = new JFrame ("Nested Panels");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.getContentPane();
frame.setPreferredSize(new Dimension(350,200));
frame.pack();
frame.setVisible(true);
}
public void paintComponent (Graphics page)
{
super.paintComponent (page);
final int HEIGHT = 10;
page.setColor (Color.yellow);
page.fillRect (50, 50, (7*10), HEIGHT);//1-10
page.fillRect (50, 64, (5*10), HEIGHT);//11-20
page.fillRect (50, 78, (0*10), HEIGHT);//21-30
page.fillRect (50, 92, (1*10), HEIGHT);//31-40
page.fillRect (50, 106, (9*10), HEIGHT);//41-50
page.fillRect (50, 120, (12*10), HEIGHT);//51-60
page.fillRect (50, 134, (4*10), HEIGHT);//61-70
page.fillRect (50, 148, (6*10), HEIGHT);//71-80
page.fillRect (50, 162, (2*10), HEIGHT);//81-90
page.fillRect (50, 176, (13*10), HEIGHT);//91-100
page.drawString("1-10",10,60);
page.drawString("11-20",10,74);
page.drawString("21-30",10,88);
page.drawString("31-40",10,102);
page.drawString("41-50",10,116);
page.drawString("51-60",10,130);
page.drawString("61-70",10,144);
page.drawString("71-80",10,158);
page.drawString("81-90",10,172);
page.drawString("91-100",10,186);
page.drawString("7", 30, 60);
page.drawString("5", 30, 74);
page.drawString("0", 30, 88);
page.drawString("1", 30, 102);
page.drawString("9", 30, 116);
page.drawString("12", 30, 130);
page.drawString("4", 30, 144);
page.drawString("6", 30, 158);
page.drawString("2", 30, 172);
page.drawString("13", 30, 186);
}
}
最佳答案
public Graphing() {
JFrame frame = new JFrame ("Nested Panels");
frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(this);
在主目录
public static void main(String[] args) {
new Graphing();
}
要完全做到 Kosher,主要方法实际上应该是:
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
new Graphing();
}
});
}
此时,您不必了解第二个主方法代码的详细信息,但要知道它确保在主 Swing 线程上调用 Swing GUI。这样做可以帮助避免不可预测的线程问题,这些问题在简单的程序中不太可能发生,但如果代码变得稍微复杂一点,则可能会发生。
其他问题 - 您需要尽量避免使用魔数(Magic Number)、硬编码数字,而是使用变量,这样您可以更轻松地更改条形的高度。
关于java - 在 JPanel 上创建条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26517955/