有几次我因为建议使用以下方法而受到批评:
在Swing组件上.当我想在显示的组件之间定义比例时,我没有看到任何替代它们的用法.我被告知这个:
对于布局,答案总是相同的:使用合适的LayoutManager
我在网上搜索了一下,但我没有找到任何关于这个主题的综合分析.所以我有以下问题:
我想做的事:
创建一个JPanel子类,在包含的组件之上绘制一个简单的叠加层.
我为什么不用JLayeredPane?
见JComponent#isOptimizedDrawingEnabled().
当a JMenu中存在a时JFrame,JPanel使用重写paintChildren(Graphics)方法添加a 时,在传递的Graphics对象中提供了不正确的坐标起点,如此代码示例所示:
import java.awt.Color;
import java.awt.FontMetrics;
import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.SwingUtilities;
public final class Sscce {
public static void main(String[] args) {
try {
SwingUtilities.invokeAndWait(new Runnable() {
@Override
public void run() {
// a normal frame
JFrame f = new JFrame();
// set up a simple menu
JMenuBar mb = new …Run Code Online (Sandbox Code Playgroud)