java生成j动态页面_Java Swing - 如何创建一个动态大小的JScrollPane w/JPanel作为客户端?...

这篇博客介绍如何利用Java Swing构建一个动态调整大小的JScrollPane,结合JPanel作为内容面板。通过实例代码展示了如何创建JButton作为缩略图,并在用户点击“Add New”菜单项时动态添加到滚动面板中,同时保持界面的适应性和响应性。
摘要由CSDN通过智能技术生成

import java.awt.BorderLayout;

import java.awt.Dimension;

import java.awt.GridLayout;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.KeyEvent;

import javax.swing.Box;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.KeyStroke;

public class Main extends JPanel {

private static final Dimension THUMB_SIZE = new Dimension(170, 150);

private Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();

private JPanel thumbPanel = new JPanel(new GridLayout(0, 6, 5, 5));

public Main() {

JPanel holderPanel = new JPanel(new BorderLayout());

holderPanel.add(thumbPanel, BorderLayout.NORTH);

holderPanel.add(Box.createGlue(), BorderLayout.CENTER);

setLayout(new BorderLayout());

add(new JScrollPane(holderPanel), BorderLayout.CENTER);

}

public JMenuBar createMenuBar() {

JMenuBar top_menu_bar = new JMenuBar();

JMenu main_menu = new JMenu("Menu");

main_menu.setMnemonic(KeyEvent.VK_M);

top_menu_bar.add(main_menu);

JMenuItem menu_item;

menu_item = new JMenuItem("Add New");

menu_item.setMnemonic(KeyEvent.VK_N);

menu_item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N,

ActionEvent.ALT_MASK));

menu_item.setActionCommand("new");

menu_item.addActionListener(e->createThumb());

main_menu.add(menu_item);

return top_menu_bar;

}

protected void createThumb() {

JButton thumb = new JButton("Thumb");

thumb.setPreferredSize(THUMB_SIZE);

thumbPanel.add(thumb);

revalidate();

repaint();

}

@Override

public Dimension getPreferredSize() {

return new Dimension(screen.width / 10 * 6,

screen.height / 10 * 6);

}

public static void main(String[] args) {

Main mainPanel = new Main();

JFrame f = new JFrame();

f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

f.getContentPane().add(mainPanel);

f.setJMenuBar(mainPanel.createMenuBar());

f.pack();

f.setVisible(true);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值