下面是非常简单的一段代码,但是问题有2:
1、我希望 JPanel 不要占满 JFrame
2、我希望通过调用 setLocation() 方法来指定组件的位置
但是这个目的都没有达到,所以请教下大家(我一开始Test extends JFrame,但是不行后才另外建的一个JFrame)
public class Test{ JButton myButton = new JButton("Test");
JFrame myFrame = new JFrame();
public Test(){
Dimension size = new Dimension(50, 30);
myButton.setSize(size);
myButton.setPreferredSize(size);
myButton.setMaximumSize(size);
myButton.setMinimumSize(size);
myButton.setLocation(100, 50);
JPanel myPanel = new JPanel();
Dimension size2 = new Dimension(100, 100);
myPanel.setPreferredSize(size2);
myPanel.setSize(size2);
myPanel.setMaximumSize(size2);
myPanel.setMinimumSize(size2);
myPanel.add(myButton);
myPanel.setBackground(Color.RED);
myFrame.add(myPanel);
myFrame.setSize(300, 300);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setVisible(true);
}
public static void main(String[] args){
Test myTest = new Test();
}
}
1、我希望 JPanel 不要占满 JFrame
2、我希望通过调用 setLocation() 方法来指定组件的位置
但是这个目的都没有达到,所以请教下大家(我一开始Test extends JFrame,但是不行后才另外建的一个JFrame)
public class Test{ JButton myButton = new JButton("Test");
JFrame myFrame = new JFrame();
public Test(){
Dimension size = new Dimension(50, 30);
myButton.setSize(size);
myButton.setPreferredSize(size);
myButton.setMaximumSize(size);
myButton.setMinimumSize(size);
myButton.setLocation(100, 50);
JPanel myPanel = new JPanel();
Dimension size2 = new Dimension(100, 100);
myPanel.setPreferredSize(size2);
myPanel.setSize(size2);
myPanel.setMaximumSize(size2);
myPanel.setMinimumSize(size2);
myPanel.add(myButton);
myPanel.setBackground(Color.RED);
myFrame.add(myPanel);
myFrame.setSize(300, 300);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setVisible(true);
}
public static void main(String[] args){
Test myTest = new Test();
}
}
1)我一开始Test extends JFrame,但是不行后才。
怎么会不行呢。当然可行啊,而且鼓励这样做。
2)你要首先获取JFrame的getContentPane(),然后将该contentPane容器的布局管理器设置为null,这样你就可以向contentPane容器[注意不是JFrame]加入组件[大小,位置你可任意设置。]
public class Test extends JFrame{
JButton myButton = new JButton("Test");
Container cp=this.getContentPane();
public Test()
{
cp.setLayout(null);
Dimension size = new Dimension(50, 30);
myButton.setSize(size);
myButton.setPreferredSize(size);
myButton.setMaximumSize(size);
myButton.setMinimumSize(size);
myButton.setLocation(100, 50);
JPanel myPanel = new JPanel();
Dimension size2 = new Dimension(100, 100);
myPanel.setPreferredSize(size2);
myPanel.setSize(size2);
myPanel.setMaximumSize(size2);
myPanel.setMinimumSize(size2);
myPanel.add(myButton);
myPanel.setBackground(Color.RED);
myPanel.setLocation(10,10);
cp.add(myPanel);
this.setSize(300, 300);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main(String[] args){
new Test();
}
}
import java.awt.Color;
import java.awt.Dimension;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;public class Test{ JButton myButton = new JButton("Test");
JFrame myFrame = new JFrame();
public Test(){
Dimension size = new Dimension(50, 30);
myButton.setSize(size);
myButton.setPreferredSize(size);
myButton.setMaximumSize(size);
myButton.setMinimumSize(size);
myButton.setLocation(100, 50);
JPanel myPanel = new JPanel();
myPanel.setLayout(null);
Dimension size2 = new Dimension(200, 200);
myPanel.setPreferredSize(size2);
myPanel.setSize(size2);
myPanel.setMaximumSize(size2);
myPanel.setMinimumSize(size2);
myPanel.add(myButton);
myPanel.setBackground(Color.RED);
myFrame.add(myPanel);
myFrame.setLayout(null);
myPanel.setLocation(0, 0);
myFrame.setSize(300, 300);
myFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
myFrame.setVisible(true);
}
public static void main(String[] args){
Test myTest = new Test();
}
}虽然帮你在这种方式下改好了,但是还是建议楼主用继承自Jframe的方法,毕竟这种方法不太容易控制
JButton myButton = new JButton("Test");
public TempTest(){
Dimension size = new Dimension(50, 30);
myButton.setSize(size);
myButton.setPreferredSize(size);
myButton.setMaximumSize(size);
myButton.setMinimumSize(size);
myButton.setLocation(100, 50);
JPanel myPanel = new JPanel();
Dimension size2 = new Dimension(100, 100);
myPanel.setPreferredSize(size2);
myPanel.setSize(size2);
myPanel.setMaximumSize(size2);
myPanel.setMinimumSize(size2);
myPanel.add(myButton);
myPanel.setBackground(Color.RED);
myPanel.setLocation(50, 50);
this.setLayout(null);
add(myPanel);
setSize(300, 300);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}
public static void main(String[] args){
TempTest myTest = new TempTest();
}
}