这是一个jlabel显示太短的示例,没有足够的空间用于“网站”(请参阅代码)部分。
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class JLabeleg extends JFrame
{
public JLabeleg()
{
setTitle("Example");
setSize(500,100);
setVisible(true);
setLocationRelativeTo(null);
setLayout(new BorderLayout());
Container eg = getContentPane();
JPanel west = new JPanel(new GridLayout(2,1));
JPanel center = new JPanel(new GridLayout(2,3));
eg.add(west,BorderLayout.WEST);
eg.add(center,BorderLayout.CENTER);
west.add(new JLabel("Name : "));
west.add(new JLabel("Website : "));
center.add(new JLabel("Szekuns"));
center.add(new JLabel(""));
center.add(new JLabel(""));
center.add(new JLabel("www.example.com.my/example/example"));
center.add(new JLabel(""));
center.add(new JLabel(""));
}
public static void main(String[] args)
{
JLabeleg example = new JLabeleg();
example.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
我的原始代码和这个示例的不同之处在于,jlabel的源代码实际上是一个来自io文件的对象加载的“settext”。这有关系吗?“还有什么可供选择的吗?”www.example.com/example/example“看得更清楚?也许是通过占据右手边的jlabel空间?
1条答案
按热度按时间pb3s4cty1#
一种解决方法是使用
pack()
加载标签文本后。我不太喜欢这个解决方案,因为我发现它让用户感到不安。GridLayout
很快还会向您展示一些重要的限制(如果您有一个大标签,而其他标签非常小,则会丢失大量可用空间,因为所有标签的大小都与最大的标签相同)。在所有情况下,我都建议只设置GridLayout
,这样更容易维护。GridBagLayout
可能是另一种选择,但需要多一点经验来掌握。最后,一个
JTable
在你的情况下也许是一个更好的选择(但是我们缺乏你想要达到的目标的背景)。这里有两个例子展示了你是如何完成任务的(但是还有很多其他可能更好的方法,解释你的目标可以帮助我们更加精确)。
示例1(使用
pack()
以及GridLayout
):例2(使用
GridBagLayout
以及revalidate()
)