I am trying to make a java desktop application where I am using multiple JLabel
I want to set fix height and width of JLabel
. How can I achieve this?
我正在尝试创建一个java桌面应用程序,其中使用多个JLabel,我想设置JLabel的固定高度和宽度。我如何做到这一点?
Here is my code
这是我的代码
public class Second extends JFrame
{
JPanel panel1,panel2;
JLabel label=new JLabel();
ArrayList<JLabel> lbllist = new ArrayList<>();
public Second()
{
super("Simple Timer");
{
getContentPane().setBackground(new java.awt.Color(255,255,255));
}
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
Container c = getContentPane();
c.setLayout( new FlowLayout());
setUndecorated(true);
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
setBounds(0,0,screenSize.width, screenSize.height);
panel2=new JPanel();
panel2.setBounds(360, 180, 360, 1020);
panel2.setBackground(new java.awt.Color(255,153,51));
c.add(panel2);
JPanel panel3 = createPanel();
panel1.setLayout(new GridBagLayout());
panel1.add(panel3);
JPanel panel4 = createPanel();
panel2.setLayout(new GridBagLayout());
// jPanel2.setLayout(null);
panel2.add(panel4);
setLayout(null);
}
private JPanel createPanel() {
JPanel panel = new JPanel(new GridLayout(0, 1, 10, 5));
EmptyBorder panelBorder = new EmptyBorder(10, 5, 10, 10);
panel.setBorder(panelBorder);
panel.setBackground(new java.awt.Color(255, 153, 51));
panel.setOpaque(true);
EmptyBorder border1 = new EmptyBorder(5, 20, 15, 18);
Border border = BorderFactory.createLineBorder(Color.BLUE, 2);
for (int i = 0; i <11; i++) {
label = new JLabel("<html>Case Item CaseNum<br><font color=yellow>Party1<br>Party2</font></html>");
label.setFont(new java.awt.Font("Times New Roman", 1, 18));
label.setBorder(border);
label.setSize(300, 100);
label.setBorder(border1);
Dimension d = label.getPreferredSize();
label.setBackground(Color.GRAY);
label.setForeground(new java.awt.Color(255, 255,255 ));
label.setOpaque(true);
lbllist.add(label);
panel.add(label);
}
return panel;
}
When I reduce text size or text from JLabel
then size of JLabel
reduced but I want that when i reduced or remove any text from JLabel
but size of Jlabel should not reduced it should fix
当我减少JLabel的文本大小或文本大小时,JLabel的大小减小了,但是我希望当我减少或从JLabel中删除任何文本时,JLabel的大小不应该减小,应该进行修正
How can I get this?
我怎么能得到这个呢?
Thanks in advance
谢谢提前
4 个解决方案
#1
12
You can set a fixed the size by setting the minimum, preferred and maximum size:
您可以通过设置最小、首选和最大尺寸来设置一个固定的尺寸:
setMinimumSize(width, height);
setPreferredSize(width, height);
setMaximumSize(width, height);
As the Link from MadProgrammer, you need to override these methods, not using them from outside, based on the reasons mentioned in this link.
作为mad程序员的链接,您需要基于此链接中提到的原因,重写这些方法,而不是从外部使用它们。
#2
2
if this method not work
如果这个方法不起作用
setMinimumSize(width, height);
setPreferedSize(width, height);
setMaximumSize(width, height);
then use it
然后使用它
setMinimumSize(new Dimension(width, height));
setPreferedSize(new Dimension(width, height));
setMaximumSize(new Dimension(width, height));
#3
2
An easy work around (without overriding existing classes) is to;
一个简单的工作(不重写现有的类)是:
-
Create a JPanel specifically for the component
为组件创建一个JPanel
-
Set the size for the JPanel
设置JPanel的大小
-
Place the component within the JPanel
将组件放置在JPanel中
-
Place the JPanel where you would have originally placed the component
将JPanel放置在最初放置组件的位置
e.g.
如。
JPanel mainPanel = new JPanel(); //Assume this is the panel you are placing things into.
JLabel nameLabel = new JLabel("Name:");
JPanel nameLabelPanel = new JPanel();
nameLabelPanel.setPreferredSize(new Dimension(100, 25));
JPanel.add(nameLabel);
mainPanel.add(nameLabelPanel);
#4
0
Use JLabel.setPreferredSize(width, height);
The jpanel does not have a layout, try Jpanel pane =new JPanel(new FlowLayout());
使用JLabel。setPreferredSize(宽度、高度);jpanel没有布局,试试jpanel窗格= new jpanel(新FlowLayout());
#1
12
You can set a fixed the size by setting the minimum, preferred and maximum size:
您可以通过设置最小、首选和最大尺寸来设置一个固定的尺寸:
setMinimumSize(width, height);
setPreferredSize(width, height);
setMaximumSize(width, height);
As the Link from MadProgrammer, you need to override these methods, not using them from outside, based on the reasons mentioned in this link.
作为mad程序员的链接,您需要基于此链接中提到的原因,重写这些方法,而不是从外部使用它们。
#2
2
if this method not work
如果这个方法不起作用
setMinimumSize(width, height);
setPreferedSize(width, height);
setMaximumSize(width, height);
then use it
然后使用它
setMinimumSize(new Dimension(width, height));
setPreferedSize(new Dimension(width, height));
setMaximumSize(new Dimension(width, height));
#3
2
An easy work around (without overriding existing classes) is to;
一个简单的工作(不重写现有的类)是:
-
Create a JPanel specifically for the component
为组件创建一个JPanel
-
Set the size for the JPanel
设置JPanel的大小
-
Place the component within the JPanel
将组件放置在JPanel中
-
Place the JPanel where you would have originally placed the component
将JPanel放置在最初放置组件的位置
e.g.
如。
JPanel mainPanel = new JPanel(); //Assume this is the panel you are placing things into.
JLabel nameLabel = new JLabel("Name:");
JPanel nameLabelPanel = new JPanel();
nameLabelPanel.setPreferredSize(new Dimension(100, 25));
JPanel.add(nameLabel);
mainPanel.add(nameLabelPanel);
#4
0
Use JLabel.setPreferredSize(width, height);
The jpanel does not have a layout, try Jpanel pane =new JPanel(new FlowLayout());
使用JLabel。setPreferredSize(宽度、高度);jpanel没有布局,试试jpanel窗格= new jpanel(新FlowLayout());