小编典典

JFRAME上的JAVA定位标签

java

我需要绘制一个水平直方图,并且按如下所示设置直方图的标签,

CODE

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);
 }

有人能找出这里有什么问题吗?
为什么不显示其他标签?


阅读 258

收藏
2020-11-30

共1个答案

小编典典

这个问题的答案的问题是,你不应该使用BorderLayout(这在JFrame默认情况下使用),而是使用GridLayout。这样
您就可以将添加JLabelsJFrame。一个示例如下所示:

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);
});
2020-11-30