- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试布局一个对话框,左侧有一个滚动面板,右侧有一个 Canvas ,填充可用空间但不被按钮栏覆盖。在我的示例中可以看到我遇到的问题是,复合 Material 似乎认为它们有无限的空间来吸引自己,而我无法理解这应该如何与任何东西一起工作。
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
public class FMLDialog extends Dialog
{
public FMLDialog(Shell parentShell)
{
super(parentShell);
}
@Override
protected void configureShell(Shell shell)
{
super.configureShell(shell);
shell.setSize(new Point(700,500));
shell.setText("FML");
}
@Override
public Control createDialogArea(final Composite comp)
{
Composite content = (Composite) super.createDialogArea(comp);
Composite parent = new Composite(content, SWT.NONE);
GridLayout gridLayout1 = new GridLayout(1, false);
gridLayout1.verticalSpacing=10;
GridLayout gridLayout2 = new GridLayout(2, false);
parent.setLayout(gridLayout2);
parent.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false));
final ScrolledComposite scroll = new ScrolledComposite(parent, SWT.V_SCROLL);
scroll.setExpandHorizontal(true);
scroll.setExpandVertical(true);
Composite optionsPanel = new Composite(scroll, SWT.BORDER);
optionsPanel.setSize(optionsPanel.computeSize(SWT.DEFAULT, SWT.DEFAULT));
optionsPanel.setLayout(gridLayout1);
scroll.setContent(optionsPanel);
for (int i = 0; i < 200; i++) {
new Label(optionsPanel, SWT.NONE).setText("this is item " + i);
}
scroll.setSize(optionsPanel.computeSize(SWT.DEFAULT, SWT.DEFAULT));
final Canvas c = new Canvas(parent, SWT.BORDER);
c.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
c.addPaintListener(new PaintListener() {
@Override
public void paintControl(PaintEvent e) {
Point size = c.getSize();
e.gc.drawText("Width: " + size.x + "\nHeight: " + size.y, 5, 5);
e.gc.drawOval(2, 2, size.x - 4, size.y - 4);
}
});
return content;
}
public static void main(String[] args) {
Display d = new Display();
Shell s = new Shell();
FMLDialog fml = new FMLDialog(s);
fml.open();
}
}
最佳答案
这里存在一些问题,首先是不调用 ScrolledComposite#setMinSize()
,以及 GridData
和 Layout
的一些小问题。
这是代码的修改版本,可以运行:
public class FMLDialog extends Dialog
{
public FMLDialog(Shell parentShell)
{
super(parentShell);
}
@Override
protected void configureShell(Shell shell)
{
super.configureShell(shell);
shell.setSize(new Point(700, 500));
shell.setText("FML");
}
@Override
public Control createDialogArea(final Composite comp)
{
Composite content = (Composite) super.createDialogArea(comp);
content.setLayout(new GridLayout(2, false));
content.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
final ScrolledComposite scroll = new ScrolledComposite(content, SWT.V_SCROLL);
scroll.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
scroll.setExpandHorizontal(true);
scroll.setExpandVertical(true);
Composite optionsPanel = new Composite(scroll, SWT.BORDER);
optionsPanel.setLayout(new FillLayout(SWT.VERTICAL));
optionsPanel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
for (int i = 0; i < 200; i++)
{
new Label(optionsPanel, SWT.NONE).setText("this is item " + i);
}
scroll.setContent(optionsPanel);
scroll.setMinSize(optionsPanel.computeSize(SWT.DEFAULT, SWT.DEFAULT));
final Canvas c = new Canvas(content, SWT.BORDER);
c.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
c.addPaintListener(new PaintListener()
{
@Override
public void paintControl(PaintEvent e)
{
Point size = c.getSize();
e.gc.drawText("Width: " + size.x + "\nHeight: " + size.y, 5, 5);
e.gc.drawOval(2, 2, size.x - 4, size.y - 4);
}
});
return content;
}
public static void main(String[] args)
{
Display d = new Display();
Shell s = new Shell();
FMLDialog fml = new FMLDialog(s);
fml.open();
}
}
关于java - JFace 对话框布局问题,在窗口边界之外绘制的小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42119220/
我有一个扩展 FormDialog 的自定义 JFace 对话框(称为 PropertyDialog)。我想在 PropertryDialog 打开后立即通过它打开一个模态消息对话框,以向用户显示一条
我在 jface View 中有一个 jface tableviewer 表,用户可以单击 tableviewer 表的任何行,单击时 View 必须导航到另一个 View ,并将选定的行 ID 发送
我正在尝试使用 Wizard 类 (org.eclipse.jface.wizard.Wizard) 生成向导 基本上,我在构造函数中扩展 Wizard 的地方是我 addPage 我想要的两个页面。
我创建了一个 JFace 向导,显示一个用户应该在其中进行选择的列表。由于该页面仅包含一个列表,因此我想启用双击选择。如果用户双击单个事件,向导应跳转到下一页。 到目前为止我得到了以下代码: vie
我想向选择按钮添加一个监听器,该按钮获取在 list 表查看器中选择的多行。然后它会继续检查这些框。我的问题是如何获取在表格查看器中选择的行列表? 这是该表的代码: private void crea
我正在使用一个小型 JFace 首选项存储,我可以在其中直接添加首选项,但是当我想删除已放入的首选项之一时遇到麻烦。 我在 API 中看不到任何允许删除的内容。这样做的正确方法是什么? 最佳答案 假设
我有一个没有columnviewer支持的jface树。它有一个装饰标签提供商,因为我需要装饰树项目。我无法使用 celllableprovider 来执行此操作。我看过诸如http://dev.ec
当用户展开 TreeViewer 中的特定节点时,它应该展开两层而不是一层。所以我添加了以下代码: viewer.addTreeListener(new ITreeViewerListener() {
如图所示,对话框打开时按钮栏有时无法正确显示。我认为由于我必须为 DefaultTableModel 嵌入 awt 框架,因此产生了一些布局问题。 有什么办法可以解决这个问题吗?或者我应该使用 jfa
我创建了一个 JFace 向导,显示一个列表,用户应该在其中进行选择。由于页面只包含一个列表,我想启用双击选择。如果用户双击单个事件,向导应该跳转到下一页。 到目前为止,我得到了以下代码: view
我想向选择按钮添加一个监听器,该按钮获取在 list 表查看器中选择的多行。然后它会继续检查这些框。我的问题是如何获取在表格查看器中选择的行列表? 这是该表的代码: private void crea
我在我的应用程序中使用 JFace 对话框。而且我不会子类化 getInitialSize(xxx)。 JFace 可以正确确定对话框的高度,但宽度。我的问题是 JFace 对话框是否可以自动计算我的
我对 Jface 还很陌生,现在我面临着表中最后一列的问题。看一下下一个屏幕截图: 正如您所看到的,启动应用程序时最后一列变得过大,无论如何我都无法解决这个问题!下面您可以看到查看代码: packag
我目前正在使用 JFace 为数据库插件功能开发 GUI(由于线程问题,无法使用任何其他方法),并且我的任务是使 GUI 看起来尽可能与数据库字段相似。我需要在文本字段内放置一个星号,如下所示: 我尝
我遇到了一个小问题,需要帮助。问题是我希望调用一个调用 html 页面的浏览器窗口。 html 文件在 3 个不同的浏览器中打开,因此其代码应该是正确的。实际问题是,它弹出页面无法显示的错误消息 这是
如何强制列表查看器更新大小?当我向列表中添加一个比现有大小更长的元素时,列表查看器应该展开: 我以这种方式更新列表查看器: lvConstraints.refresh(); 最佳答案 您确定在添加内容
我创建了一个 CheckboxTableViewer 来显示内容列表,如下图所示。问题是表格的滚动条无法正常工作。也许我缺少表格的一些布局参数? 这是代码: public class TableVie
我习惯于使用 Swing,通常使用 JOptionPane.showOptionDialog(...) 向用户显示一组要选择的选项。 现在我正在切换到 Jface 作为 Eclipse 插件...是否
JFace 标签提供程序框架有什么好的概述吗? JFace snippets并没有真正解释不同代之间的关系(3.2、3.3、3.4 之前等) 最佳答案 有许多很好的教程可用。您应该知道您需要了解完整的
JFace 中的另一个错误?我使用标准机制实现了自定义工具提示:CellLabelProvider 实现了方法 getToolTipText()。 一切似乎都很好,但事实并非如此。 我有一个 View
我是一名优秀的程序员,十分优秀!