我正在构建一个扩展的窗口/布局,它将扩展/缩小所提供的数据,可能会扩展以填充浏览器窗口。
编辑:滚动条应位于工作区,而不是窗口。
到目前为止,我只是设法通过一个简单的标签列表使其垂直工作(请参阅simple_list.png)。
最终布局应该有一个中央工作区和页眉,页脚,左/右区域。工作区域根据数据扩展。
把树弄错了? CSSLayout?不适合Vaadin?
感谢任何帮助/指导。
下面的简化测试用例(Vaadin 7,子类化Window)。
public class RendPanel extends JPanel {
private static final long serialVersionUID = 1L;
int widthe = 320;
int heighte = 240;
double angle = Math.toRadians(220);
double sin = Math.sin(angle);
double cos = Math.cos(angle);
double x0 = 0.5 * (widthe - 1); // point to rotate about
double y0 = 0.5 * (heighte - 1); // center of image
public static BufferedImage fbuffer;
public RendPanel(int width, int height) {
fbuffer = new BufferedImage(320, 240, BufferedImage.TYPE_INT_RGB);
BufferedImage in = null;
try { in = ImageIO.read(new File("square.png")); } //32x32 square .png
catch (IOException e) { e.printStackTrace(); }
for (int i = 0; i < in.getWidth(); i++) {
for (int j = 0; j < in.getHeight(); j++) {
fbuffer.setRGB(i + (320 / 2) - 16, j + (240 / 2) - 16, in.getRGB(i, j));
}
}
BufferedImage neww = new BufferedImage(320, 240, BufferedImage.TYPE_INT_RGB);
for (int x = 0; x < widthe; x++) {
for (int y = 0; y < heighte; y++) {
if(x >= x0 - 32 && x <= x0 + 32 && y >= y0 - 32 && y <= y0 + 32){
double a = x - x0;
double b = y - y0;
int xx = (int) (+a * cos - b * sin + x0);
int yy = (int) (+a * sin + b * cos + y0);
// plot pixel (x, y) the same color as (xx, yy) if it's in bounds
if (xx >= 0 && xx < width && yy >= 0 && yy < height) {
neww.setRGB(xx, yy, fbuffer.getRGB(x, y));
}
}
}
}
fbuffer = neww;
repaint();
setPreferredSize(new Dimension(width, height));
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.drawImage(fbuffer, 0, 0, null);
}
}
}
答案 0 :(得分:1)
Vaadin文件说:
如果子窗口具有固定或百分比大小且其内容变得太大而无法放入内容区域,则会显示特定方向的滚动条。另一方面,如果子窗口在方向上具有未定义的大小,则它将适合内容的大小,并且永远不会获得滚动条。
来源:https://vaadin.com/docs/v7/framework/layout/layout-sub-window.html