我使用的是JGoodies表单1.8.0
当一个超大的标签导致整个布局不再适合窗口时,我就遇到了问题。我希望该文本能在视觉上被剪裁,因此对于用户来说,很明显文本不适合,但是GUI的其余部分仍然应该保持合适。
我准备了一个简单的例子,展示了同样的行为。在这里,一切都很好,因为窗口足够大:
在这里,同样的窗口,但调整了大小:
注意,最右边的列不再可见。
预期效果如下:
下面是截图的代码:
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import java.awt.*;
import javax.swing.*;
public class Test extends JFrame {
Test() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(900, 600);
JPanel left = new JPanel();
left.setBackground(Color.BLUE);
JPanel right = new JPanel();
JLabel fox = new JLabel("The quick brown fox jumps over the lazy dog.");
fox.setFont(new Font(null, 0, 50));
JPanel rightBottom = new JPanel();
rightBottom.setLayout(new GridLayout(10, 10));
for (int i = 1; i <= 100; i++) {
rightBottom.add(new JButton("butt" + i));
}
CellConstraints cc = new CellConstraints();
this.setLayout(new FormLayout("100dlu,p:g", "f:p:g"));
this.add(left, cc.xy(1, 1));
this.add(right, cc.xy(2, 1));
right.setLayout(new FormLayout("f:p:g", "p,5dlu,f:p:g"));
right.add(fox, cc.xy(1, 1));
right.add(rightBottom, cc.xy(1, 3));
}
public static void main(String[] args) {
new Test().setVisible(true);
}
}
发布于 2014-08-16 23:25:31
首选大小的规范使布局显示按其首选大小的按钮。因此,有些按钮不适合。尝试指定不同的约束。例如,使用常量大小与增长和填充的组合。例如,尝试以下几个:
this.setLayout(new FormLayout("100dlu,1dlu:g", "f:1dlu:g"));
right.setLayout(new FormLayout("f:1dlu:g", "p,5dlu,f:1dlu:g"));
但是,在某些尺寸下,按钮标题将不合适。
结果如下:
发布于 2014-08-16 23:25:12
BorderLayout ...帮不上忙
对我来说很好:
import java.awt.*;
import javax.swing.*;
public class Test8 extends JFrame {
Test8() {
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(900, 600);
JPanel left = new JPanel();
left.setBackground(Color.BLUE);
JPanel right = new JPanel(new BorderLayout());
JLabel fox = new JLabel("The quick brown fox jumps over the lazy dog.");
fox.setFont(new Font(null, 0, 50));
JPanel rightBottom = new JPanel();
rightBottom.setLayout(new GridLayout(10, 10));
for (int i = 1; i <= 100; i++) {
rightBottom.add(new JButton("butt" + i));
}
right.add(fox, BorderLayout.NORTH);
right.add(rightBottom, BorderLayout.CENTER);
add(right);
}
public static void main(String[] args) {
new Test8().setVisible(true);
}
}
如果您不喜欢标签中显示的点,那么尝试一个不可编辑的文本字段。
当某些东西不起作用时,然后发布您尝试过的代码。口头解释没什么用。
https://stackoverflow.com/questions/25344178
复制相似问题