我一直在努力制作一个尺寸相对于窗户大小的JLabel但由于某种原因,这个JLabel没有出现在屏幕上。
这是我的MainGUI类中使用的代码,它包含基本接口:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class MainGUI extends JFrame{
JPanel core;
GridBagConstraints c;
JLabel[] sts;
public MainGUI(){
core = new JPanel(new GridBagLayout());
getContentPane().add(core, BorderLayout.CENTER);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(500, 500);
sts = new JLabel[10];
int width = (int)(66/100) * getWidth(), height = (int)(75/100) * getHeight(); //problem: due to these sizes the JLabel is not appearing
for(int i = 0; i < sts.length; i++){
sts[i] = new JLabel("test");
sts[i].setOpaque(true);
sts[i].setBackground(Color.BLACK);
sts[i].setForeground(Color.BLACK);
sts[i].setPreferredSize(new Dimension(width,height)); //size being set
}
c = new GridBagConstraints();
c.gridx = 0;
c.gridy = 0;
core.add(sts[1], c);
}
}
非常感谢任何寻求解决方案的帮助,非常感谢。
答案 0 :(得分:2)
几个问题 -
由于除法的结果是int -
,因此总是返回零int width = (int)(66/100) * getWidth();
成功 -
int width = (int)(((float)66/100) * getWidth());
答案 1 :(得分:0)
试试RelativeLayout库。这里有一个教程at Wiki。