我需要绘制一个水平直方图,并且按如下所示设置直方图的标签,
public static void drawVertical(){ JFrame frame = new JFrame("Horizontal Histogram"); frame.setSize(300, 300); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JLabel label_01=new JLabel("0-29"); label_01.setAlignmentX(-290); label_01.setAlignmentY(290); JLabel label_02=new JLabel("30-39"); label_02.setAlignmentX(-290); label_02.setAlignmentY(270); JLabel label_03=new JLabel("40-69"); label_03.setAlignmentX(-290); label_03.setAlignmentY(250); JLabel label_04=new JLabel("70-100"); label_04.setAlignmentX(-290); label_04.setAlignmentY(230); frame.add(label_01); frame.add(label_02) frame.add(label_03); frame.add(label_04); }
有人能找出这里有什么问题吗? 为什么不显示其他标签?
这个问题的答案的问题是,你不应该使用BorderLayout(这在JFrame默认情况下使用),而是使用GridLayout。这样 您就可以将添加JLabels到JFrame。一个示例如下所示:
BorderLayout
JLabels
JFrame
EventQueue.invokeLater(() -> { JFrame frame = new JFrame("Stackoverflow | Question"); frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); frame.setSize(300, 300); frame.setLocationRelativeTo(null); // This is the important line. This will Change the layout to a GridLayout. frame.setLayout(new GridLayout(4, 1)); frame.add(new JLabel("0-29")); frame.add(new JLabel("30-39")); frame.add(new JLabel("40-69")); frame.add(new JLabel("70-100")); frame.setVisible(true); });