java 点击面板中的按钮产生另一个面板紧贴着按钮所在的面板,该如何实现?
按钮的面板磅值是(200,250,200,400),另一个面板的磅值为(200,250,400,400),它们不是相同大小,请问该如何写?...
按钮的面板磅值是(200,250,200,400),另一个面板的磅值为(200, 250, 400, 400),它们不是相同大小,请问该如何写?
展开
1个回答
展开全部
java.awt.Rectangle r = frame1.getBounds();
frame2.setBounds(r.x+r.width, r.y, r.width, r.height);
这两句话就是设置第二个窗口的位置和大小啊,位置要根据第一个窗口来,否则你如何紧贴?大小你可以自己设置啊~
frame2.setBounds(r.x+r.width, r.y, 你想要的宽,你想要的高);
============================================================
看你要怎么紧贴了,比如是紧贴在右面,还是紧贴在下面,或其他方向,我下面给的例子是紧贴右面,并和原来的窗口一样大小
主要做法就是获取原来窗口的左上角坐标和宽高,然后简单计算出新建窗口的位置和大小,再把它显示出来即可~
============================================================
当然,如果你需要在移动的时候两个窗口也一起移动,那么需要监听别的事件的~
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Test2 {
public static void main(String[] args) {
final JFrame frame1 = new JFrame("Main");
JButton button = new JButton("Create Another Frame");
frame1.add(button, BorderLayout.CENTER);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
JFrame frame2 = new JFrame("Second");
java.awt.Rectangle r = frame1.getBounds();
frame2.setBounds(r.x+r.width, r.y, r.width, r.height);
frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame2.setVisible(true);
}
});
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setBounds(100, 100, 400, 400);
frame1.setVisible(true);
}
}
frame2.setBounds(r.x+r.width, r.y, r.width, r.height);
这两句话就是设置第二个窗口的位置和大小啊,位置要根据第一个窗口来,否则你如何紧贴?大小你可以自己设置啊~
frame2.setBounds(r.x+r.width, r.y, 你想要的宽,你想要的高);
============================================================
看你要怎么紧贴了,比如是紧贴在右面,还是紧贴在下面,或其他方向,我下面给的例子是紧贴右面,并和原来的窗口一样大小
主要做法就是获取原来窗口的左上角坐标和宽高,然后简单计算出新建窗口的位置和大小,再把它显示出来即可~
============================================================
当然,如果你需要在移动的时候两个窗口也一起移动,那么需要监听别的事件的~
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class Test2 {
public static void main(String[] args) {
final JFrame frame1 = new JFrame("Main");
JButton button = new JButton("Create Another Frame");
frame1.add(button, BorderLayout.CENTER);
button.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
JFrame frame2 = new JFrame("Second");
java.awt.Rectangle r = frame1.getBounds();
frame2.setBounds(r.x+r.width, r.y, r.width, r.height);
frame2.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
frame2.setVisible(true);
}
});
frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame1.setBounds(100, 100, 400, 400);
frame1.setVisible(true);
}
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询