
一般来说,我们常把JPanel[面板]放到JFrame窗体中
但是也有一种内部窗体JInternalFrame ,可以放到其他的容器JDesktopPane里,
效果图如下
代码如下
import java.awt.*import java.awt.event.*
import java.beans.PropertyVetoException
import javax.swing.*
public class FrameDemo extends JFrame implements ActionListener{
JButton jb
JDesktopPane jdp
public FrameDemo(){
jb =new JButton("创建一个内部窗体")
jb.addActionListener(this)
jdp = new JDesktopPane()
add(jdp)
add(jb,BorderLayout.SOUTH)
setSize(500,500)
setDefaultCloseOperation(EXIT_ON_CLOSE)
setLocationRelativeTo(null)
setVisible(true)
}
public static void main(String[] args) {
new FrameDemo()
}
int index = 1
int x = 50
int y=50
public void actionPerformed(ActionEvent e) {
//内部窗口
JInternalFrame iframe = new JInternalFrame("第"+index+"个内部窗口"
, true, true, true, true)
index++
iframe.setLocation(x+=10, y+=10)
iframe.setSize(210, 180)
iframe.setVisible(true)
jdp.add(iframe)
try {
iframe.setSelected(true)//被选中
} catch (PropertyVetoException e1) {
e1.printStackTrace()
}
}
}
import java.awt.Colorimport java.awt.Component
import java.awt.GridLayout
import java.awt.event.ActionEvent
import java.awt.event.ActionListener
import javax.swing.JButton
import javax.swing.JFrame
import javax.swing.JPanel
public class ColorFrame extends JFrame {
private JPanel panel1, panel2
public ColorFrame() {
setLayout(new GridLayout(-1, 1))
panel1 = new JPanel()
panel2 = new JPanel()
getContentPane().add(panel1)
getContentPane().add(panel2)
panel1.setBackground(Color.red)
JButton btn1 = new JButton("White")
JButton btn2 = new JButton("Black")
panel1.add(btn1)
panel1.add(btn2)
new ToogleGroup(panel1, btn1, Color.white, btn2, Color.black)
JButton btn3 = new JButton("Red")
JButton btn4 = new JButton("Green")
panel2.add(btn3)
panel2.add(btn4)
new ToogleGroup(panel2, btn3, Color.red, btn4, Color.green)
}
private static class ToogleGroup implements ActionListener {
private JButton btn1
private JButton btn2
private Color color1
private Color color2
private Component target
public ToogleGroup(Component target, JButton btn1, Color color1,
JButton btn2, Color color2) {
this.btn1 = btn1
this.btn2 = btn2
btn1.addActionListener(this)
btn2.addActionListener(this)
this.target = target
this.color1 = color1
this.color2 = color2
toggleButton(btn1)
}
private void toggleButton(Object src){
if (src == btn1) {
btn1.setVisible(false)
btn2.setVisible(true)
target.setBackground(color1)
} else {
btn1.setVisible(true)
btn2.setVisible(false)
target.setBackground(color2)
}
}
@Override
public void actionPerformed(ActionEvent e) {
Object src = e.getSource()
toggleButton(src)
}
}
public static void main(String[] args) {
ColorFrame colorFrame = new ColorFrame()
colorFrame.setSize(300, 300)
colorFrame.setLocationRelativeTo(null)
colorFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
colorFrame.setVisible(true)
}
}
import java.awt.event.ActionEventimport java.awt.event.ActionListener
import javax.swing.JButton
import javax.swing.JFrame
import javax.swing.JPanel
public class Demo1 {
/*
* 在主方法中创建窗口对象。
* 画板里的组件和监听要在画板类里面写好。
* 主方法只管创建不同的画板对象往里添加就行了。
*
*/
public static void main(String[] args) {
MyFrame frame = new MyFrame()
MyPanelOne panel1 = new MyPanelOne()
frame.add(panel1)
}
}
class MyFrame extends JFrame { // 主界面
public MyFrame() {
this.setTitle("主界面")
this.setSize(500, 500)
this.setVisible(true)
}
void addPanel(MyPanelOne panel) { // 传递画板的函数
this.setContentPane(panel)
this.setVisible(true)
}
}
class MyPanelOne extends JPanel { // 画板1
public MyPanelOne() {
createButton()
}
private void createButton() {
JButton b1 = new JButton("按钮一")
this.add(b1)
b1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("hello")
}
})
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)