我需要评估以下表达式(伪数学表示法):
?ipi?n
其中p
是三元素向量的矩阵,n
是一个三元素向量.我可以使用for循环执行此操作,如下所示,但我无法弄清楚如何向量化:
p = [1 1 1; 2 2 2];
n = [3 3 3];
s = 0;
for i = 1:size(p, 1)
s = s + dot(p(i, :), n)
end
Run Code Online (Sandbox Code Playgroud) 我想实现一个JSplitPane(水平分割),其中右侧组件具有恒定宽度,即当拖动分隔线时,它将跳回到正确的大小,除非将分隔线拖得足够正确,在这种情况下最右边的组件将具有零宽度.
要重新显示正确的组件,用户可以将分隔线拖到左侧足够远的位置.
我有这个大多数工作,但当我调整窗口大小取决于我改变窗口大小的多少和多快,分频器跳跃显示或隐藏正确的组件,我想要的是它不应该改变'状态'即如果右侧组件不可见,那么它应该保持不可见,反之亦然.
我已经尝试了很多东西,但主要的障碍是似乎没有办法知道天气,用户通过鼠标拖动分隔线,或者代码(我的分频器逻辑和/或JSplitPane内部逻辑)改变了分频器的位置.
这是一个自包含的测试用例,运行它并尝试拖动水平分隔线以隐藏和显示右侧面板,并使用隐藏/显示的那些尝试调整窗口大小.
在Mac OS X Java 1.6(Apple)或Java 7(Oracle)上无法正常工作.使用Oracle的东西,渲染速度要慢得多,而且问题更严重.缓慢调整窗口大小可以正常工作,但快速调整窗口大小会导致问题.
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.*;
import net.miginfocom.swing.MigLayout;
public class SplitTest {
public static class MySplitPane extends JSplitPane {
boolean m_RightCollapsed;
public MySplitPane(int orientation, JComponent left, JComponent right) {
super(orientation, left, right);
addPropertyChangeListener(new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
}
});
addComponentListener(new ComponentListener() {
@Override
public void componentShown(ComponentEvent e) …
Run Code Online (Sandbox Code Playgroud)