相关疑难解决方法(0)

我应该避免在Java Swing中使用set(Preferred | Maximum | Minimum)Size方法吗?

有几次我因为建议使用以下方法而受到批评:

  1. 有必要对setPreferredSize
  2. 了setMinimumSize
  3. setMaximumSize

Swing组件上.当我想在显示的组件之间定义比例时,我没有看到任何替代它们的用法.我被告知这个:

对于布局,答案总是相同的:使用合适的LayoutManager

我在网上搜索了一下,但我没有找到任何关于这个主题的综合分析.所以我有以下问题:

  1. 我应该完全避免使用这些方法吗?
  2. 已经定义了这些方法的原因.那我什么时候应该使用它们?在哪种情况下?出于什么目的?
  3. 使用这些方法的负面后果究竟是什么?(我只能考虑在具有不同屏幕分辨率的系统之间添加可移植性).
  4. 我认为任何LayoutManager都不能完全满足所有需要的布局需求.我是否真的需要为布局上的每个小变化实现一个新的LayoutManager?
  5. 如果4的答案是"是",那么这是否会导致LayoutManager类的扩散变得难以维护?
  6. 在我需要定义组件子级之间的比例的情况下(例如,child1应该使用10%的空间,child2 40%,child3 50%),是否可以在不实现自定义LayoutManager的情况下实现这一点?

java swing layout-manager

471
推荐指数
8
解决办法
5万
查看次数

多行标题的JTable标题文本换行(自定义TableCellRenderer)

如何获取多行JTable标题,其中标题列正确放大以适合某些文本然后换行到新行?

如下所示:

包装列标题

目前正在寻找上述要求会返回许多解决方案,而这些解决方案都没有真正解决问题:

http://www.javarichclient.com/multiline-column-header/

为JTable创建多行标题

Java JTable标题自动换行

以上解决方案都建议使用HTML代码,例如:

String[] columnNames = {
    "<html><center>Closing<br>Date</html>",
    "<html><center>Open<br>Price</html>",
    "<html>Third<br>column</html>"
};
Run Code Online (Sandbox Code Playgroud)

由于几个原因,该解决方案并不优雅,主要是因为在变量列名称的情况下,我需要将字符串传递给一个剥离空格并用<br>符号替换它们的函数,但是如果列文本包含出现的非常短的文本它自己的一条线.

我需要确定列的最小和最大长度,然后才能使文本居中成为可能,上述解决方案很快变得过度工程化并且难以管理.

http://www.java2s.com/Code/Java/Swing-Components/MultiLineHeaderTable.htm

http://www.java2s.com/Code/Java/Swing-Components/MultiLineHeaderExample.htm

multilineheader2

以上解决方案需要手动创建一个标题数组,其中的单词已正确拆分,如下所示

  public static Object[][] tableHeaders = new Object[][] {
      new String[] { "Currency" },
      new String[] { "Yesterday's", "Rate" },
      new String[] { "Today's", "Rate" },
      new String[] { "Rate", "Change" } };
Run Code Online (Sandbox Code Playgroud)

-要么-

DefaultTableModel dm = new DefaultTableModel();
    dm.setDataVector(
        new Object[][] { { "a", "b", "c" }, { "A", "B", "C" } },
        new Object[] { "1st\nalpha", …
Run Code Online (Sandbox Code Playgroud)

java swing jtable jtableheader

4
推荐指数
1
解决办法
3527
查看次数

标签 统计

java ×2

swing ×2

jtable ×1

jtableheader ×1

layout-manager ×1