我想创建一个自定义的swing组件,例如桌面小部件,它不需要JFrame(或扩展它)来打印在屏幕上.
我不想扩展JFrame,因为我的组件非常简单,JFrame实现了许多我不需要的功能.
我是谁开始的?我应该延长哪一堂课?
非常感谢
编辑---------------------------------------
多谢你们!
我会检查你发送的参考文献.另外,是否可以在没有swing API的情况下在屏幕上绘制java?
使用delphi 7,我有一组TCollection / TCollectionItem后代。它们只能在设计时设置,决不能在运行时修改。我怎样才能做到这一点?设计时应始终允许进行任何需要的编辑,但是在运行时中,我不希望能够添加,删除或重新索引集合中的任何项目。每个项目的属性,是的,我确实希望启用它们。但是更改实际项目只能在设计时进行。
我创建了一个复合组件Box,我想添加到布局中.BoxXML:
<?xml version="1.0" encoding="utf-8"?>
<merge xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearLayoutForBlock"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:id="@+id/linearLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical" android:background="@drawable/screen_background" android:layout_marginLeft="5dp" android:layout_marginTop="5dp">
<ImageButton
android:id="@+id/imageButtonContent"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center_horizontal"
android:scaleType="fitCenter"
android:src="@drawable/beach_bed" android:background="@drawable/buttonbackground" android:clickable="true" android:layout_margin="5dp" android:contentDescription="@string/sample_text"/>
<TextView
android:id="@+id/textViewContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="@string/sample_text"
android:textColor="@color/deep_blue" android:layout_margin="5dp"/>
</LinearLayout>
</merge>
Run Code Online (Sandbox Code Playgroud)
Box 类:
public class Box extends LinearLayout {
private TextView textContent;
private ImageView imageContent;
public Box(Context context, AttributeSet attrs) {
super(context, attrs);
((Activity)getContext()).getLayoutInflater().inflate(R.layout.box, this);
setupViewItems();
}
private void setupViewItems() {
textContent = (TextView) findViewById(R.id.textViewContent);
imageContent = (ImageView) …Run Code Online (Sandbox Code Playgroud) 我正在创建一个自定义Android组件,有时需要使用onBackPressed事件(例如,在自定义ViewGroup中有一个弹出菜单,如果它显示,后退按钮事件关闭它并被消耗,否则它被忽略).那可能吗?我可以从我的ViewGroup子类中拦截此事件以及如何?
编辑:我尝试重写onKeyPreIme,因为Android文档暗示,该方法永远不会从ViewGroup中调用.
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event)
{
return true;
}
Run Code Online (Sandbox Code Playgroud)
在onKeyPreIme文档中,它说:
在通过与视图层次结构关联的任何输入方法处理键事件之前处理它.这可用于在IME消耗它们之前拦截特殊情况下的关键事件; 一个典型的例子是处理BACK键来更新应用程序的UI,而不是让IME看到它并关闭它自己.
我们有一些覆盖createwnd的旧版delphi自定义组件.这些组件位于表单内的面板上.
当表单和面板被实例化时,组件也被实例化,并且createwnd被调用一次.这是有道理的.
我很惊讶地发现,如果我在运行时切换面板的父节点,则会再次调用createwnd.
例如,在某些情况下,我可能会将Panel1的父容器更改为Form2.panel2.基本上在运行时在Form2的面板中绘制Panel1.
TForm1.buttonclick(..)
begin
..
Panel1.parent := Form2.panel2;
..
end;
Run Code Online (Sandbox Code Playgroud)
当父级更改时,为什么要重新创建Panel1中的自定义组件?
并且Panel1中的所有组件的行为都是相同的,即使是非自定义的组件,例如,如果我在Panel1上也有TButton,那么当父母切换时也会重新创建吗?我不认为这样做,这就是为什么我这么惊讶.
最后,如果此行为不正确,我该如何进行,以便在父容器更改时不会调用createwnd.
谢谢!
我需要使用wordpress在网站上制作一些自定义页面.这包括:
将表添加到数据库中创建一个页面,根据提交的表单向新表添加条目,从而生成以结构化方式显示这些值的页面.
我需要的:
我过去已经做过这样的事情,但鉴于我几乎没有使用wordpress的经验,我为那些额外的表构建了一个自定义的mysqli连接.此外,会话集成等以非正确的方式包含在内.这次我想以正确的方式做事.
样本表:
cabinets
| id | lenght | height | width |
1 1200 3000 300
2 1200 2800 600
Run Code Online (Sandbox Code Playgroud) 我在更改文件选择器中附件组件的位置时遇到问题.
我通过在文件选择器的附件组件中放置一个复选框来自定义保存文件对话框.但是复选框的位置不好,真的很难看.
我可以将附件组件移动到文件窗格下面吗?怎么做?
或者,如果您有其他解决方案来做同样的事情,也欢迎.
感谢你们.
我使用以下代码添加复选框:
JFileChooser fc = new JFileChooser(file)
JPanel accessory = new JPanel();
JCheckBox isOpenBox = new JCheckBox("Open file after saving");
accessory.setLayout(new BorderLayout());
accessory.add(isOpenBox, BorderLayout.SOUTH);
fc.setAccessory(accessory);
Run Code Online (Sandbox Code Playgroud)
在此屏幕截图中,复选框的位置不佳.

这个截图是我想要的确切效果.

我被赋予了创建自定义swing组件的任务.我的组件在测试应用程序中正常运行,其中包括用于放大和缩小Image的JSlider.但是我需要以Model,UIDelegate和Component类格式呈现我的自定义组件,我完全迷失了如何转换我的代码以使其遵循这种格式.这是我的测试应用程序的代码.
package test;
import java.awt.*;
import java.awt.geom.AffineTransform;
import java.awt.image.BufferedImage;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import javax.swing.event.*;
import java.io.File;
import java.net.URL;
import javax.imageio.ImageIO;
public class ZoomDemo extends JComponent implements ChangeListener {
JPanel gui;
/**
* Displays the image.
*/
JLabel imageCanvas;
Dimension size;
double scale = 1.0;
private BufferedImage image;
public ZoomDemo() {
size = new Dimension(10, 10);
setBackground(Color.black);
try {
image = ImageIO.read(new File("car.jpg"));
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void setImage(Image image) {
imageCanvas.setIcon(new ImageIcon(image));
}
public …Run Code Online (Sandbox Code Playgroud) 我已经搜索了类似的问题很长一段时间,其中大部分提到了UIViewController的xib内容. 我试图为我的自定义viewController模型添加一个xib文件,并发现它的Xib文件所有者应该是我的自定义viewController模型的类 - 这是合理的.但是当我为我的UIView模型创建一个xib时,为什么情况会有所不同 - 如下所示:
我创建了名为"KWView"(KWView.h和KWView.m)的UIView模型然后我为这个模型创建了xib,初始化它
KWView *oneView = [[[NSBundle mainBundle] loadNibNamed:@"KWView" owner:nil options:nil ]lastObject];
Run Code Online (Sandbox Code Playgroud)
这个Xib的文件所有者名称是"NSObject" (然后我尝试任何其他更多,无论我选择什么,它运行顺利),在那里,我选择视图的自定义类作为"KWView"[这个xib名为"KWView.xib"]
问题是:
1.无论我更改我的自定义视图的Xib文件的所有者名称,它都有效.如果是这样,这个文件的所有者在这里做了什么工作,或者说,为什么会发生这种情况?
2.一般来说,我应该将自定义视图的Xib文件所有者设置为我的自定义视图的类,还是将该视图添加到的viewController类?或者只是设置它"NSObject"?
我有一个名为employee的简单Angular2组件,它根据其属性的值填充并返回HTML模板.例如
如果我使用,在我的index.html中 - 它将调用我的employeeComponent,它将从数据库中获取基于属性id(在本例中为"123")的数据并填充html模板.让我们说,出于简单的原因,它填充该员工的名称并返回类似的内容
这是第一次工作正常,我调用组件,并在后续调用它不显示任何错误,也不渲染
<employee id="123"></employee>
<employee id="121"></employee>
<employee id="122"></employee>
Run Code Online (Sandbox Code Playgroud)
我想要灵活性,我不想限制标签数量.由于这是一个'视图组件',我不希望它被限制在main/app组件中.我想要纯粹的视图可重用性.
employee.component.ts
import {Component, ElementRef} from 'angular2/core';
@Component({
selector: 'employee',
template: '{{id}}'
})
export class EmployeeComponent {
id: number;
name : string;
constructor(elm: ElementRef){
this.id = elm.nativeElement.getAttribute('id');
console.log(elm.nativeElement);
}
}
Run Code Online (Sandbox Code Playgroud)
的index.html
<employee id="123"></employee>
<employee id="121"></employee>
<employee id="122"></employee>
Run Code Online (Sandbox Code Playgroud)
main.ts
import {bootstrap} from 'angular2/platform/browser';
import {AppComponent} from './app.component';
import {EmployeeComponent} from './employee.component';
bootstrap(AppComponent);
bootstrap(EmployeeComponent);
Run Code Online (Sandbox Code Playgroud)
有什么帮助可以解决这个问题?