Java 两列布局和第一列截断
我正在尝试使用Java 两列布局和第一列截断,java,swing,border-layout,Java,Swing,Border Layout,我正在尝试使用BorderLayout创建一个JPanel,其中包含两个JLabel。 第一个JLabel应使用除第二个JLabel之外的所有可用水平空间 目前,我的结果如下: 我试图做到的是: 这里有一个SSCCE: import javax.swing.*; import java.awt.*; public class TwoColumnsTruncate { public TwoColumnsTruncate() { JPanel panel = new J
BorderLayout
创建一个JPanel
,其中包含两个JLabel
。
第一个JLabel
应使用除第二个JLabel
之外的所有可用水平空间
目前,我的结果如下:
我试图做到的是:
这里有一个SSCCE:
import javax.swing.*;
import java.awt.*;
public class TwoColumnsTruncate {
public TwoColumnsTruncate() {
JPanel panel = new JPanel(new BorderLayout());
JLabel left = new JLabel("This is a really large label and its text should be truncated with ellipsis");
JLabel right = new JLabel("Some short text");
panel.add(left, BorderLayout.WEST);
panel.add(right, BorderLayout.EAST);
JFrame frame = new JFrame(getClass().getSimpleName());
frame.getContentPane().add(panel);
frame.setMinimumSize(new Dimension(400, 75));
frame.setMaximumSize(new Dimension(400, 75));
frame.setVisible(true);
}
public static void main(String[] args) {
new TwoColumnsTruncate();
}
}
你有什么建议可以帮我做到这一点吗?让我有些惊讶的是,我发现你可以通过将
左侧的标签指定给BorderLayout.CENTER
而不是BorderLayout.WEST
来实现这一点。我必须对文档进行更多的研究(可能更多),以找出原因。让我有些惊讶的是,我发现您可以通过将左侧标签指定给BorderLayout.CENTER
而不是BorderLayout.WEST
来完成这一任务。我必须对文档进行更多的研究(可能更多),以找出原因。让我有些惊讶的是,我发现您可以通过将左侧标签指定给BorderLayout.CENTER
而不是BorderLayout.WEST
来完成这一任务。我必须对文档进行更多的研究(可能更多),以找出原因。让我有些惊讶的是,我发现您可以通过将左侧标签指定给BorderLayout.CENTER
而不是BorderLayout.WEST
来完成这一任务。我必须进一步研究文档(可能更多)以找出原因。下面,我已经注释掉了您添加标签的常规两行,并选择使用我自己喜欢的方法,让事情看起来更真实,GridBags。这是你修改过的代码,展示了我的想法
import javax.swing.*;
import java.awt.*;
public class TwoColumnsTruncate {
public TwoColumnsTruncate() {
JPanel panel = new JPanel(new BorderLayout());
JLabel left = new JLabel("This is a really large label and its text should be truncated with ellipsis");
JLabel right = new JLabel("Some short text");
GridBagLayout layout=new GridBagLayout();
GridBagConstraints gbc=new GridBagConstraints();
layout.columnWidths=new int[] {198, 198};
layout.rowHeights=new int[] {70};
panel.setLayout(layout);
gbc.fill=GridBagConstraints.BOTH;
gbc.insets=new Insets(0, 0, 0, 0);
gbc.gridx=0;
gbc.gridy=0;
gbc.gridwidth=1;
gbc.gridheight=1;
panel.add(left, gbc);
gbc.gridx=1;
gbc.gridy=0;
gbc.gridwidth=1;
gbc.gridheight=1;
panel.add(right, gbc);
//panel.add(left, BorderLayout.WEST);
//panel.add(right, BorderLayout.EAST);
JFrame frame = new JFrame(getClass().getSimpleName());
frame.getContentPane().add(panel);
frame.setMinimumSize(new Dimension(400, 75));
frame.setMaximumSize(new Dimension(400, 75));
frame.setVisible(true);
}
public static void main(String[] args) {
new TwoColumnsTruncate();
}
}
正如您可以看到的那样,按原样运行它将生成所需的省略号。任何进一步的移动都可以通过更改给定的插入和列宽来实现。我建议稍微修改一下这些,因为由于摆动的反复无常和缺乏图像安全性,像素往往会被弄乱。
我希望这能解决你的问题,祝你好运。另外,如果你对GridBag的东西有任何问题,请随时给我发个消息。下面,我已经注释掉了你添加标签的常规两行,而是选择使用我自己喜欢的方法,让东西看起来更真实,GridBag。这是你修改过的代码,展示了我的想法
import javax.swing.*;
import java.awt.*;
public class TwoColumnsTruncate {
public TwoColumnsTruncate() {
JPanel panel = new JPanel(new BorderLayout());
JLabel left = new JLabel("This is a really large label and its text should be truncated with ellipsis");
JLabel right = new JLabel("Some short text");
GridBagLayout layout=new GridBagLayout();
GridBagConstraints gbc=new GridBagConstraints();
layout.columnWidths=new int[] {198, 198};
layout.rowHeights=new int[] {70};
panel.setLayout(layout);
gbc.fill=GridBagConstraints.BOTH;
gbc.insets=new Insets(0, 0, 0, 0);
gbc.gridx=0;
gbc.gridy=0;
gbc.gridwidth=1;
gbc.gridheight=1;
panel.add(left, gbc);
gbc.gridx=1;
gbc.gridy=0;
gbc.gridwidth=1;
gbc.gridheight=1;
panel.add(right, gbc);
//panel.add(left, BorderLayout.WEST);
//panel.add(right, BorderLayout.EAST);
JFrame frame = new JFrame(getClass().getSimpleName());
frame.getContentPane().add(panel);
frame.setMinimumSize(new Dimension(400, 75));
frame.setMaximumSize(new Dimension(400, 75));
frame.setVisible(true);
}
public static void main(String[] args) {
new TwoColumnsTruncate();
}
}
frame.getContentPane().add(panel);
frame.setMinimumSize(new Dimension(400, 75));
frame.setMaximumSize(new Dimension(400, 75));
frame.setVisible(true);
正如您可以看到的那样,按原样运行它将生成所需的省略号。任何进一步的移动都可以通过更改给定的插入和列宽来实现。我建议稍微修改一下这些,因为由于摆动的反复无常和缺乏图像安全性,像素往往会被弄乱。
我希望这能解决你的问题,祝你好运。另外,如果你对GridBag的东西有任何问题,请随时给我发个消息。下面,我已经注释掉了你添加标签的常规两行,而是选择使用我自己喜欢的方法,让东西看起来更真实,GridBag。这是你修改过的代码,展示了我的想法
import javax.swing.*;
import java.awt.*;
public class TwoColumnsTruncate {
public TwoColumnsTruncate() {
JPanel panel = new JPanel(new BorderLayout());
JLabel left = new JLabel("This is a really large label and its text should be truncated with ellipsis");
JLabel right = new JLabel("Some short text");
GridBagLayout layout=new GridBagLayout();
GridBagConstraints gbc=new GridBagConstraints();
layout.columnWidths=new int[] {198, 198};
layout.rowHeights=new int[] {70};
panel.setLayout(layout);
gbc.fill=GridBagConstraints.BOTH;
gbc.insets=new Insets(0, 0, 0, 0);
gbc.gridx=0;
gbc.gridy=0;
gbc.gridwidth=1;
gbc.gridheight=1;
panel.add(left, gbc);
gbc.gridx=1;
gbc.gridy=0;
gbc.gridwidth=1;
gbc.gridheight=1;
panel.add(right, gbc);
//panel.add(left, BorderLayout.WEST);
//panel.add(right, BorderLayout.EAST);
JFrame frame = new JFrame(getClass().getSimpleName());
frame.getContentPane().add(panel);
frame.setMinimumSize(new Dimension(400, 75));
frame.setMaximumSize(new Dimension(400, 75));
frame.setVisible(true);
}
public static void main(String[] args) {
new TwoColumnsTruncate();
}
}
frame.getContentPane().add(panel);
frame.setMinimumSize(new Dimension(400, 75));
frame.setMaximumSize(new Dimension(400, 75));
frame.setVisible(true);
正如您可以看到的那样,按原样运行它将生成所需的省略号。任何进一步的移动都可以通过更改给定的插入和列宽来实现。我建议稍微修改一下这些,因为由于摆动的反复无常和缺乏图像安全性,像素往往会被弄乱。
我希望这能解决你的问题,祝你好运。另外,如果你对GridBag的东西有任何问题,请随时给我发个消息。下面,我已经注释掉了你添加标签的常规两行,而是选择使用我自己喜欢的方法,让东西看起来更真实,GridBag。这是你修改过的代码,展示了我的想法
import javax.swing.*;
import java.awt.*;
public class TwoColumnsTruncate {
public TwoColumnsTruncate() {
JPanel panel = new JPanel(new BorderLayout());
JLabel left = new JLabel("This is a really large label and its text should be truncated with ellipsis");
JLabel right = new JLabel("Some short text");
GridBagLayout layout=new GridBagLayout();
GridBagConstraints gbc=new GridBagConstraints();
layout.columnWidths=new int[] {198, 198};
layout.rowHeights=new int[] {70};
panel.setLayout(layout);
gbc.fill=GridBagConstraints.BOTH;
gbc.insets=new Insets(0, 0, 0, 0);
gbc.gridx=0;
gbc.gridy=0;
gbc.gridwidth=1;
gbc.gridheight=1;
panel.add(left, gbc);
gbc.gridx=1;
gbc.gridy=0;
gbc.gridwidth=1;
gbc.gridheight=1;
panel.add(right, gbc);
//panel.add(left, BorderLayout.WEST);
//panel.add(right, BorderLayout.EAST);
JFrame frame = new JFrame(getClass().getSimpleName());
frame.getContentPane().add(panel);
frame.setMinimumSize(new Dimension(400, 75));
frame.setMaximumSize(new Dimension(400, 75));
frame.setVisible(true);
}
public static void main(String[] args) {
new TwoColumnsTruncate();
}
}
frame.getContentPane().add(panel);
frame.setMinimumSize(new Dimension(400, 75));
frame.setMaximumSize(new Dimension(400, 75));
frame.setVisible(true);
正如您可以看到的那样,按原样运行它将生成所需的省略号。任何进一步的移动都可以通过更改给定的插入和列宽来实现。我建议稍微修改一下这些,因为由于摆动的反复无常和缺乏图像安全性,像素往往会被弄乱。
我希望这能解决你的问题,祝你好运。另外,如果你对GridBag有任何问题,请随时给我发个信息
frame.getContentPane().add(panel);
frame.setMinimumSize(new Dimension(400, 75));
frame.setMaximumSize(new Dimension(400, 75));
frame.setVisible(true);
应该是:
frame.getContentPane().add(panel);
frame.setResizable(false); // guessing you want this, based on the snippet
frame.pack(); // Set it to the minimum size it actually NEEDS to be.
frame.setMinimumSize(frame.getSize());
frame.setVisible(true);
应该是:
frame.getContentPane().add(panel);
frame.setResizable(false); // guessing you want this, based on the snippet
frame.pack(); // Set it to the minimum size it actually NEEDS to be.
frame.setMinimumSize(frame.getSize());
frame.setVisible(true);
应该是:
frame.getContentPane().add(panel);
frame.setResizable(false); // guessing you want this, based on the snippet
frame.pack(); // Set it to the minimum size it actually NEEDS to be.
frame.setMinimumSize(frame.getSize());
frame.setVisible(true);
应该是:
frame.getContentPane().add(panel);
frame.setResizable(false); // guessing you want this, based on the snippet
frame.pack(); // Set it to the minimum size it actually NEEDS to be.
frame.setMinimumSize(frame.getSize());
frame.setVisible(true);
谢谢我明天会试试。我发现,有了这些约束,布局允许正确的标签延伸到组件之外(以便剪裁)。如果框架足够宽,则整个右侧标签可见,但在我的系统上,宽度为400时,只有最初的“部分”可见。GridBagLayout
的优点是它为用户提供了大量的控制。它的缺点是需要用户进行大量的控制。谢谢。我明天会试试。我发现,有了这些约束,布局允许正确的标签延伸到组件之外(以便剪裁)。如果框架足够宽,则整个右侧标签可见,但在我的系统上,宽度为400时,只有最初的“部分”可见。GridBagLayout
的优点是它为用户提供了大量的控制。它的缺点是需要用户进行大量的控制。谢谢。我明天会试试。我发现,有了这些约束,布局允许正确的标签延伸到组件之外(以便剪裁)。如果框架足够宽,则整个右侧标签可见,但在我的系统上,宽度为400时,只有最初的“部分”可见。GridBagLayout
的优点是它为用户提供了大量的控制。它的缺点是需要用户进行大量的控制。谢谢。我明天会试试。我发现有了这些限制,布局允许正确的标签扩展ou