所以我有这个JButtons我添加了图标.最初的图标太大,所以我事先调整它们的大小,它工作正常.除了当我调整窗口大小时,JButton会改变大小,但不会改变图标,这是有问题的.
有没有办法让Icon只填充它附加的JButton?使代码更清晰的代码:
public JewelClass(){
setBackground (new Color (30,30,30));
addActionListener(this);
setLayout(new GridLayout());
ImageIcon icon = new ImageIcon(src/carre.jpg);
setIcon (resizeIcon(icon,60,60));
}
Run Code Online (Sandbox Code Playgroud)
resizeIcon是一个个人函数,它接受一个Icon,一个width参数和一个height参数,并返回一个调整大小的Icon(显然).我尝试更改布局,但它没有改变任何东西.我尝试获取JButton的宽度/高度,但是因为它们在添加Icon时尚不存在,所以它不起作用.
你们有没有想过如何解决这个问题?它不一定是一个图标,只要我的JButton充满我给它的图像,它真棒:)
谢谢!
我只需要一些关于我有问题的方向,在哪里看等等.我正在为我的一个项目使用运动跟踪手套,它为每个手指和手掌返回X,Y和Z值.
我想要做的是首先根据这些坐标创建每个手指运动的表示,然后将它们中的每一个附加到手掌的运动,以具有手的表示.一旦我管理了第一步,第二步就很容易了,但是...我不管理.
我正在尝试用Java实现它(更好的分析可能性),但是只能同时用所有点来制作3D图形.每条曲线中大约有45,000个,所以......你是否知道如何让它更像动画,就像在给定时间t在XYZ坐标处显示一个点一样?
另一个问题是:matlab实际上是最好的选择吗?我看到如何使这个动画在Java中工作,但我从来没有使用Java进行数据管理,我怀疑它是否真的很擅长......是否有其他软件/语言能够擅长数据管理并使其动画化?或者我应该只使用Java来制作动画,还是使用Matlab进行分析?
谢谢!
这将是一个真正的理论问题,请跟我一点.我需要用我的JButton做一些事情,我不知道从哪里开始.
所以我需要的是能够点击一个JButton,并有一个视觉证明它被选中,例如红色边框或白色背景或其他东西.而且我希望它保持这样,直到以相同的方式选择另一个JButton.现在,当我点击一个Jbutton时,会有一个简短的视觉显示点击它,但我不能让它持续更长时间.
我尝试使用ChangeListeners,但没有结果.
所以我的问题基本上是:你建议我尝试什么样的方法?
1 - 返回ChangeListener,它是唯一的选项2 - JButton有另一个选项可以做到这一点
对不起,如果它太模糊了,但我发现的其他一切都是超级具体的,并没有回答我的问题.
我目前正在研究手指移动的3D表示.您可以在下面的图片中看到它的外观,因为它的描述太复杂了:
手部表示http://img51.imageshack.us/img51/4747/handexample.png
这是一部动画,所以它不断变化.每个手指都有一个点,手掌有一个点.但是,我无法跟踪手指.我试着给它们不同的颜色,但它没有多大帮助.
所以问题是:
有没有办法用实际字母,甚至短字(3-4个字母)替换圆圈或任何其他符号?
或者(这是一个很大的延伸,但为什么不问?),是否有办法画出将这些点连接在一起的线条?这是可选的,如果有必要,我可以打开另一个问题.
谢谢!
这是实际的代码; 我知道它远不是优雅的编码,对此感到抱歉,但它确实有效,这对我来说已经是一个很好的步骤:
clear all
clc
csv=csvread('pilot6/maindroite.csv',1,0); %read the values from a csv
both = csv(:,2:19);
ax=axes;
set(ax,'NextPlot','replacechildren');
Dt=0.1; %sampling period in secs
k=1;
hp1=plot3(both(k,1),both(k,2),both(k,3),'ok'); %get handle to dot object
hold on;
hp2=plot3(both(k,4),both(k,5),both(k,6),'og');
hp3=plot3(both(k,7),both(k,8),both(k,9),'ob');
hp4=plot3(both(k,10),both(k,11),both(k,12),'oc');
hp5=plot3(both(k,13),both(k,14),both(k,15),'om');
hp6=plot3(both(k,16),both(k,17),both(k,18),'or');
hold off;
t1=timer('TimerFcn','k=doPlot(hp1,hp2,hp3,hp4,hp5,hp6,both,t1,k)','Period', Dt,'ExecutionMode','fixedRate');
start(t1);
Run Code Online (Sandbox Code Playgroud)
和使用的功能:
function k=doPlot(hp1,hp2,hp3,hp4,hp5,hp6,pos,t1,k)
k=k+1;
if k<5000%length(pos)
set(hp1,'XData',pos(k,1),'YData',pos(k,2),'ZData',pos(k,3));
axis([0 255 0 255 0 255]);
set(hp2,'XData',pos(k,4),'YData',pos(k,5),'ZData',pos(k,6));
set(hp3,'XData',pos(k,7),'YData',pos(k,8),'ZData',pos(k,9));
set(hp4,'XData',pos(k,10),'YData',pos(k,11),'ZData',pos(k,12));
set(hp5,'XData',pos(k,13),'YData',pos(k,14),'ZData',pos(k,15));
set(hp6,'XData',pos(k,16),'YData',pos(k,17),'ZData',pos(k,18));
else
k=1;
set(hp,'XData',pos(k,1),'YData',pos(k,2),'ZData',pos(k,3));
axis([0 255 0 255 0 255]);
end
Run Code Online (Sandbox Code Playgroud)
我只是想提一下这是基于Jorge对这个问题的回答,所以再次感谢他