我是Java Swing的新手。所以我遇到了在主窗口中添加组件的问题。
这是我的代码。
public class Utils {
private static final float BITMAP_SCALE = 0.4f;
private static final float BLUR_RADIUS = 7.5f;
public static Drawable getResizedDrawable(Context context,
int drawableResourceId, int imgWidth, int imgHeight) {
Drawable drawableResource = ContextCompat.getDrawable(context, drawableResourceId);
Bitmap bitmap = ((BitmapDrawable) drawableResource).getBitmap();
Drawable drawableResizedBitmap = new BitmapDrawable(
context.getResources(), Bitmap.createScaledBitmap(bitmap,
imgWidth, imgHeight, true));
return drawableResizedBitmap;
}
public static Bitmap blur(View v) {
return blur(v.getContext(), getScreenshot(v));
}
public static Bitmap blur(Context ctx, Bitmap image) {
int width = Math.round(image.getWidth() * BITMAP_SCALE);
int height = Math.round(image.getHeight() * BITMAP_SCALE);
Bitmap inputBitmap = Bitmap.createScaledBitmap(image, width, height, false);
Bitmap outputBitmap = Bitmap.createBitmap(inputBitmap);
RenderScript rs = RenderScript.create(ctx);
ScriptIntrinsicBlur theIntrinsic = ScriptIntrinsicBlur.create(rs, Element.U8_4(rs));
Allocation tmpIn = Allocation.createFromBitmap(rs, inputBitmap);
Allocation tmpOut = Allocation.createFromBitmap(rs, outputBitmap);
theIntrinsic.setRadius(BLUR_RADIUS);
theIntrinsic.setInput(tmpIn);
theIntrinsic.forEach(tmpOut);
tmpOut.copyTo(outputBitmap);
return outputBitmap;
}
private static Bitmap getScreenshot(View v) {
Bitmap b = Bitmap.createBitmap(v.getWidth(), v.getHeight(), Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.draw(c);
return b;
}
}
当我在main方法中调用new MainFrame()时,我只有Button按钮。没有球。你能帮帮我吗?
答案 0 :(得分:1)
将球放在BorderLayout.CENTER
而不是BorderLayout.North
答案 1 :(得分:1)
@Marc_Alx如果你将球放在BorderLayout.North
中,那么它会使用默认大小,即零。将其放在BorderLayout.CENTER
中会使其展开以填充面板。
如果你真的想在BorderLayout.North
中使用它,那么你应该为Ball创建一个构造函数来设置它的优先大小。
另请注意,Ball的paintComponent()
方法中的第一行应为
super.paintComponent(g);
确保渲染正确的背景颜色,如果将球移动到其他位置,旧球图像将被删除。