java - JLabel 继承类中的超级方法
问题描述
我正在学习 Swing GUI。下面的程序创建一个包含彩色标签的窗口。Mylabel
我已经理解了除了继承的类中的构造函数之外的整个代码JLabel
。代码是:
MyLabel
class MyLabel extends JLabel {
public MyLabel() {
super("", null, LEADING);
}
@Override
public boolean isOpaque() {
return true;
}
}
StandardColoursEx
public class StandardColoursEx extends JFrame {
public StandardColoursEx() {
initUI();
}
private void initUI() {
Color[] stdCols = {Color.black, Color.blue, Color.cyan,
Color.darkGray, Color.gray, Color.green, Color.lightGray,
Color.magenta, Color.orange, Color.pink, Color.red,
Color.white, Color.yellow};
List<JLabel> labels = new ArrayList();
for (Color col : stdCols) {
JLabel lbl = createColouredLabel(col);
labels.add(lbl);
}
createLayout(labels.toArray(new JLabel[labels.size()]));
setTitle("Standard colours");
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public JLabel createColouredLabel(Color col) {
MyLabel lbl = new MyLabel();
lbl.setMinimumSize(new Dimension(90, 40));
lbl.setBackground(col);
return lbl;
}
private void createLayout(JLabel[] labels) {
JPanel pane = (JPanel) getContentPane();
GroupLayout gl = new GroupLayout(pane);
pane.setLayout(gl);
pane.setToolTipText("Content pane");
gl.setAutoCreateContainerGaps(true);
gl.setAutoCreateGaps(true);
gl.setHorizontalGroup(gl.createParallelGroup()
.addGroup(gl.createSequentialGroup()
.addComponent(labels[0])
.addComponent(labels[1])
.addComponent(labels[2])
.addComponent(labels[3]))
.addGroup(gl.createSequentialGroup()
.addComponent(labels[4])
.addComponent(labels[5])
.addComponent(labels[6])
.addComponent(labels[7]))
.addGroup(gl.createSequentialGroup()
.addComponent(labels[8])
.addComponent(labels[9])
.addComponent(labels[10])
.addComponent(labels[11]))
.addComponent(labels[12])
);
gl.setVerticalGroup(gl.createSequentialGroup()
.addGroup(gl.createParallelGroup()
.addComponent(labels[0])
.addComponent(labels[1])
.addComponent(labels[2])
.addComponent(labels[3]))
.addGroup(gl.createParallelGroup()
.addComponent(labels[4])
.addComponent(labels[5])
.addComponent(labels[6])
.addComponent(labels[7]))
.addGroup(gl.createParallelGroup()
.addComponent(labels[8])
.addComponent(labels[9])
.addComponent(labels[10])
.addComponent(labels[11]))
.addComponent(labels[12])
);
pack();
}
public static void main(String[] args) {
EventQueue.invokeLater(() -> {
StandardColoursEx ex = new StandardColoursEx();
ex.setVisible(true);
});
}
}
请解释类内部的超级构造函数MyLabel
以及为什么使用它。
解决方案
您正在扩展 JLabel 类,所以 JLabel 对您来说超级棒,
这里是带有 3 个参数的 JLabel 构造函数文档的链接
推荐阅读
- list - Java 8:如何从两个字符串列表中创建映射
- c# - 如果多次检查 LINQ 查询返回的条件
- sql - 如何提高 SQL 内连接性能?
- laravel - Laravel如何在查询构建时通过where条件将参数传递给模型中的Accessor方法?
- c# - 我在哪里可以找到可以从存储过程创建文件(Excel、txt、csv)的模板 SSIS 包
- java - 《谁动了》MongoDB Reactive Streams Java 驱动程序
- ios - Flutter 移除 CupertinoNavigationBar 背景
- javascript - 我想从 textarea 中选择特定文本并将其设为粗体、斜体或在 reactjs 中创建超链接
- java - 如何打开主机?
- javascript - 找不到 Firebase Admin SDK 功能