- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个JTabel
我想将其添加到 JScrollPane
。但是JScrollPane
尺寸非常小。我尝试将表设置为 JPanel
(已调整大小)然后输入JPanel
至JScrollPane
但它不起作用。
这是我的代码:
static public class PnGiaoDich extends JPanel{
public PnGiaoDich(){
//size & background
setPreferredSize( new Dimension(1050, 435));
setBackground(new Color(255,255,255));
//layout
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
//create table
String[] columnNames = {"Ngày giao dịch",
"Loại gio dịch | Mô tả",
"Tình trạng",
"Số tiền"
};
Object[][] data = {
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""}
};
JTable table = new JTable(data,columnNames);
TableColumn column = null;
table.getColumnModel().getColumn(0).setPreferredWidth(150);
table.getColumnModel().getColumn(1).setPreferredWidth(525);
table.getColumnModel().getColumn(2).setPreferredWidth(150);
table.getColumnModel().getColumn(3).setPreferredWidth(150);
// create table to put into JScrollPane
JPanel pnTable = new JPanel();
pnTable.setBorder(BorderFactory.createLineBorder(Color.red));
pnTable.setPreferredSize(new Dimension(800, 600));
pnTable.add(table);
//Add panel to JScrollPane
JScrollPane scrollpn = new JScrollPane(pnTable);
//table.setFillsViewportHeight(true);
c.gridx = 0;
c.gridy = 1;
c.gridwidth = 2;
c.insets = new Insets(20,20,20,20);
c.weightx = 1;
c.weighty = 1;
c.anchor = GridBagConstraints.NORTH;
add(scrollpn,c);
//
}
}
但是如果我将这些代码发布到主 JFrame,它就可以正常工作。
这是我的完整代码:enter link description here
我的 JScrollPane 的图像:
最佳答案
好吧,让我们来看看......
setPreferredSize( new Dimension(1050, 435));
...尽量避免这样做。如果您“必须”这样做,请重写 getPreferredSize
,因为 setPreferredSize
是您的“稳定”UI 的一个漏洞
setBackground(new Color(255,255,255));
//layout
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
//create table
String[] columnNames = {"Ngày giao dịch",
"Loại gio dịch | Mô tả",
"Tình trạng",
"Số tiền"
};
Object[][] data = {
{"","","",""},
{"","","",""},
{"","","",""},
{"","","",""}
};
JTable table = new JTable(data,columnNames);
TableColumn column = null;
table.getColumnModel().getColumn(0).setPreferredWidth(150);
table.getColumnModel().getColumn(1).setPreferredWidth(525);
table.getColumnModel().getColumn(2).setPreferredWidth(150);
table.getColumnModel().getColumn(3).setPreferredWidth(150);
好吧,到目前为止还不错......
// create table to put into JScrollPane
JPanel pnTable = new JPanel();
pnTable.setBorder(BorderFactory.createLineBorder(Color.red));
pnTable.setPreferredSize(new Dimension(800, 600));
pnTable.add(table);
//Add panel to JScrollPane
JScrollPane scrollpn = new JScrollPane(pnTable);
//table.setFillsViewportHeight(true);
然后...什么?为什么将 JTable
添加到使用 FlowLayout
的 JPanel
,然后再添加 JScrollPane
?为什么不直接将 JTable
添加到 JScrollPane
本身呢?
此外,这样做时,您还需要利用 JTable
和 JScrollPane
相互通信并确定何时进行滚动的能力。
c.gridx = 0;
c.gridy = 1;
c.gridwidth = 2;
c.insets = new Insets(20,20,20,20);
c.weightx = 1;
c.weighty = 1;
c.anchor = GridBagConstraints.NORTH;
add(scrollpn,c);
c.gridwidth = 2;
?虽然它可能不会产生效果,但它引发了更多关于为什么的问题?
好吧,在考虑了约束并删除了额外的 JPanel
之后,问题归结为
setPreferredSize( new Dimension(1050, 435));
并且可能没有帮助 pnTable.setPreferredSize(new Dimension(800, 600));
我基本上将代码剥离回以下内容,“基本上”有效......
static public class PnGiaoDich extends JPanel {
public PnGiaoDich() {
setBackground(Color.WHITE);
//layout
setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
//create table
String[] columnNames = {"Ngày giao dịch",
"Loại gio dịch | Mô tả",
"Tình trạng",
"Số tiền"
};
Object[][] data = {
{"", "", "", ""},
{"", "", "", ""},
{"", "", "", ""},
{"", "", "", ""}
};
JTable table = new JTable(data, columnNames);
table.getColumnModel().getColumn(0).setPreferredWidth(150);
table.getColumnModel().getColumn(1).setPreferredWidth(525);
table.getColumnModel().getColumn(2).setPreferredWidth(150);
table.getColumnModel().getColumn(3).setPreferredWidth(150);
//Add panel to JScrollPane
table.setBorder(BorderFactory.createLineBorder(Color.RED));
JScrollPane scrollpn = new JScrollPane(table);
//table.setFillsViewportHeight(true);
c.gridx = 0;
c.gridy = 1;
c.insets = new Insets(20, 20, 20, 20);
c.weightx = 1;
c.weighty = 1;
c.anchor = GridBagConstraints.NORTH;
add(scrollpn, c);
}
}
关于Java Swing : JScrollPane dosen't expand to fit JPanel in it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53112971/
我有一个简单的 Card 组件,是从material-ui 的网站复制的。 我正在尝试在我的代码中实现它。当我单击 CardHeader 时,它不会展开。 这是我的组件: import React,
我已经使用延迟加载实现了一棵树。第一级节点是在树创建时创建的,其中只有当用户展开任何特定节点时才会创建子节点。 数据来自数据库,我们向数据库发出查询以填充子节点。实现了 TreeExpansionLi
假设我有 3 个向量(仅作为示例)。现在我想获取这 3 个所有可能组合的随机样本。通常,我会这样做: x <- 1:3 y <- 10:12 z <- 15:18 N <- length(x) * l
如果我使用 dabbrev-expand为了扩展,Emacs 搜索当前缓冲区,然后搜索其他具有相同模式的缓冲区。这是由 dabbrev-friend-buffer-function 处理的默认设置为
我想像这样切片主窗口 我的布局代码如下: QGridLayout *gLayout = new QGridLayout (); viewWidget->setStyleSheet("backgroun
我在 Android Studio Canary 1 上尝试 Jetpack Compose 并添加了 Column可组合到 ui。 Column有一个名为 modifier 的属性我们可以在其中传递
我正在努力让我们的 Accordion 可以使用 aria-expanded 等 aria 标签来访问。当单击 Accordion 触发器标题或按下键盘上的“返回”按钮时,我正确地更改了 aria-e
根据 http://doc.qt.io/qt-5/qsizepolicy.html#Policy-enum ,设置小部件的大小策略具有以下效果: The sizeHint() is a sensibl
我将使用Live Actitions显示实时数据,并在一个应用程序中添加对Dynamic Island的支持,该应用程序具有现有的小部件扩展。然而,我也不能把它造出来。当我收到错误信息时。和。即使我提
我有一个设置,如下所示: //With dynamic content here. 我正在运行一个脚本,该脚本将 #nav 的大小调整为浏览器窗口的高度大小。但有时我的
我正在使用jquery checkboxtree plugin它效果很好,并且上面的链接中有很好的文档和示例。我现在遇到一种情况,我想以编程方式检查节点。使用以下语法支持此操作: $('#tabs-
我正在尝试以下实验: 我有两个QpushButtons,比如PushA 和PushB。现在 PushA 在 QHBoxLayout 中,PushB 也在它自己的 QHBoxLayout 中。这两个水平
我目前有一个 OData V4 服务,它具有以下模型。 “类别”——“代码” 对于每个类别,可以有许多代码。 我需要 $expand the Codes, $filter where Active =
我的目的是创建一个带有 QVBoxLayout 的可滚动控件,上面有各种控件(比如按钮)。该控件放在 *.ui 窗体上。在该控件的构造函数中,我编写了以下代码: MyScrollArea::M
你们如何解决以下 Flutter 布局? 我有一个屏幕,我必须在其中显示,如图所示:一个 Logo + 3 个 TextFormFields + 2 个按钮 + 一个容器。 问题: 我需要将所有小部件
我使用最新版本的 mvvm light 工具包,但是我不清楚如何将 EventToCommand 用于事件 TreeViewItem.Expanded。 这很有效......我做错了什么?
我是 LINQ 的新手。 我有以下查询,我不知道它代表什么。 var query = (from p in data.First
这里有一个小问题。我有一个表,当我想单击运行时,该表应该展开,而且同一行中有一个展开按钮,它也应该展开一个 div。 问题:当我单击该行时,一切正常,div 将滑入。当我单击按钮(位于表行中)时,会产
图片:
我的应用程序中有 Expander 设置 FlowDirection 正常工作,但标题文本显示在水平方向。我想显示标题文本垂直绘制。 最佳答案 使用 sl 工具包中的 LayoutTransforme
我是一名优秀的程序员,十分优秀!