我在Java Swing中创建了一个应用程序。我提供了从菜单中更改应用程序外观的选项,但是在JTabbedPane
中添加了一个新的选项卡后,它并没有用新的外观进行更新。
我已经使用了这段代码:
Window windows[] = Frame.getWindows();
for(Window window : windows) {
SwingUtilities.updateComponentTreeUI(window);
}
借@Andrew的例子和这个老东西,似乎对我管用。
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTabbedPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.UIManager.LookAndFeelInfo;
/**
* @see https://stackoverflow.com/a/11949899/230513
* @see https://stackoverflow.com/a/5773956/230513
*/
public class JTabbedText {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
private final JTabbedPane jtp = new JTabbedPane();
@Override
public void run() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jtp.addTab("Model", createPanel());
jtp.addTab("View", createPanel());
jtp.addTab("Control", createPanel());
f.add(createToolBar(f), BorderLayout.NORTH);
f.add(jtp, BorderLayout.CENTER);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
});
}
private static JToolBar createToolBar(final Component parent) {
final UIManager.LookAndFeelInfo[] available =
UIManager.getInstalledLookAndFeels();
List<String> names = new ArrayList<String>();
for (LookAndFeelInfo info : available) {
names.add(info.getName());
}
final JComboBox combo = new JComboBox(names.toArray());
String current = UIManager.getLookAndFeel().getName();
combo.setSelectedItem(current);
combo.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
int index = combo.getSelectedIndex();
try {
UIManager.setLookAndFeel(
available[index].getClassName());
SwingUtilities.updateComponentTreeUI(parent);
} catch (Exception e) {
e.printStackTrace(System.err);
}
}
});
JToolBar bar = new JToolBar("L&F");
bar.add(combo);
return bar;
}
private static Box createPanel() {
Box panel = new Box(BoxLayout.X_AXIS);
JLabel label = new JLabel("Code: ", JLabel.LEFT);
label.setAlignmentY(JLabel.TOP_ALIGNMENT);
JTextArea text = new JTextArea(4, 16);
text.setAlignmentY(JTextField.TOP_ALIGNMENT);
text.append("#" + panel.hashCode());
text.append("\n#" + label.hashCode());
text.append("\n#" + label.hashCode());
panel.add(label);
panel.add(text);
return panel;
}
}
Android 2.3.3 我有两个旋转器,一个使用Strings.xml(静态)中的string-array填充,另一个使用适配器填充。 第一个旋转器(静态)如下所示 第二个旋转器(动态)如下所示 我可以改变外观和感觉的动态旋转,以类似于静态旋转?如果是,怎么做?
问题内容: 我正在为更大的GUI应用程序编写脚本。主应用程序窗口使用系统的窗口,但我希望脚本的GUI使用Nimbus 。创建GUI后,我想将其设置回原始。我觉得下面的SSCCE应该可以工作,但是我在使用对象时遇到了麻烦。 问题答案: 一般来说,混合LAF并不是一个好主意。这个问题就是一个例子。 Nimbus LAF中有某些内容可能不允许您执行此操作。按原样运行代码。它将LAF设置为,然后重置LAF
不同的手机的有不同的尺寸,不同的状态栏样式,有没有这类组件库?
问题内容: 通过网络嵌套更新,打印“ abc已更新”,但实际值在Redis数据库中不更新。 注意:-上面的代码在localhost上有效,但更新未在heroku-redistogo上显示。 编辑:-我在本地主机上运行代码,redis连接到Redistogo。使用以下代码:- 设置快速会议:- 我还使用以下代码创建了另一个redisClient: 问题答案: 在Heroku上运行此代码时,您是否在控
我正在为Django管理员设置: model.py 在admin.py 对此,我得到了以下错误: (admin. E202)“磁盘。文件”没有“磁盘。设置”的外键 根据https://docs . django project . com/en/dev/ref/models/fields/# django . db . models . foreign key中的文档,它应该可以工作。 我做了一些
矩形是正确的,因为它填充矩形形状的前2行正确显示。这是我有问题的文本。