我有以下Java代码:
import java.awt.BorderLayout;
import java.awt.Dimension;
import javax.swing.JComboBox;
import javax.swing.JFrame;
public class EnumsRightVisible {
public void show() {
JFrame frame = new JFrame("Combo box");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
String[] items = {"aaaaaaaaa__________zzzzzzzzz",
"aaaaaaaaa__________zzzzzzzzz",
"aaaaaaaaa__________zzzzzzzzz"};
JComboBox combo = new JComboBox(items);
combo.setPreferredSize(new Dimension(100,20));
frame.add(combo, BorderLayout.CENTER);
frame.setLocation(600, 100);
frame.pack();
frame.setVisible(true);
}
public static void main(String args[]) {
EnumsRightVisible enumsRightVisible = new EnumsRightVisible();
enumsRightVisible.show();
}
}
运行它,你可以看到可见文本是左向的。
请注意,这段代码并不能解决我的问题(它将文本向右对齐,但仅在组合框展开时):
((JLabel)comboBox.getRenderer()).setHorizontalAlignment(JLabel.RIGHT);
如何在同一窗口中显示文本的右端(...__zzzzzz)?提前致谢!
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class ComboBoxDemo extends JFrame {
public ComboBoxDemo() {
JComboBox comboBox = new JComboBox();
((JLabel)comboBox.getRenderer()).setHorizontalAlignment(JLabel.RIGHT);
comboBox.addItem("Apple");
comboBox.addItem("Orange");
comboBox.addItem("Mango");
getContentPane().add(comboBox, "North");
setSize(200, 100);
this.setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String[] args) {
new ComboBoxDemo().setVisible(true);
}
}
import java.awt.Component;
import java.awt.ComponentOrientation;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.ListCellRenderer;
public class ComboBoxDemo extends JFrame {
public ComboBoxDemo() {
JComboBox comboBox = new JComboBox();
setListCellRendererOf(comboBox);
comboBox.addItem("Apple");
comboBox.addItem("Orange");
comboBox.addItem("Mango");
getContentPane().add(comboBox, "North");
setSize(200, 100);
this.setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
private void setListCellRendererOf(JComboBox comboBox) {
comboBox.setRenderer(new ListCellRenderer() {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
Component component = new DefaultListCellRenderer()
.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
component.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);
return component;
}
});
}
public static void main(String[] args) {
new ComboBoxDemo().setVisible(true);
}
}
使用自定义渲染器,该渲染器使用FontMetrics测量字符串的宽度,并手动执行省略号(…)。更多信息请点击此处:http://docs.oracle.com/javase/tutorial/uiswing/components/combobox.html#renderer
这可能是一个骗局——我找不到它——我基本上只是试图通过提供我自己的ListCellRenler来自定义JComboBox显示: 当我展开JComboBox列表时,组件会正确显示名称。但是,在选择项目时,显示将恢复为myObj的toString()值。 我错过什么了吗?
问题内容: 我正在尝试将数据库项目显示为,这是我的代码。 我确实宣布并 该方法/功能将被调用,然后用户按下登录按钮。 我现在遇到的问题是,它仅显示一项,而我的数据库有多项。 有人知道为什么吗? 问题答案: 将您从数据库中获得的数据存储在矢量对象中,完成后将矢量对象在组合框中设置为新模型。试试这个, 不要 在 循环 内 关闭连接。
我有一个,其中有8个项目,我想显示其中的所有项目,但在特定条件下,用户只能选择前两个项目,因此我编写了程序,如果条件为真,用户选择任何其他选项,则会显示一个消息框,显示然后自动选择默认值。到现在为止,一直都还不错。 但现在的问题是,用户无法通过查看的选项来判断他可以选择哪些选项,因此我想做的是,如果条件为真,那么除前两个选项之外的所有选项都应该被禁用(或灰显或其他),这样用户就可以判断出您无法选择
这是我的代码,我想在右侧显示注册和登录
问题内容: 这类似于我昨天提出的问题,但更具体地针对该问题。向已经包含各种小部件的NetBeans项目中添加JFreeChart的正确方法是什么?我的updateChart()隐藏了整个JFrame。我想将JFreeChart添加到JFrame中。 更正的代码: 问题答案: 我的updateChart()隐藏了整个JFrame。 那是因为您要用免费图表中的面板替换框架的内容窗格。 我不知道您使用的
我正在做一个SWT项目,但是我将广泛使用来生成BufferedImages。我将以这种方式生成数十万张图像。 问题是,SWT似乎无法显示BuffereImage,并且有自己的类。我知道可以将BuffereImage转换为SWT的映像,但SWT的映像似乎需要手动处理,并且不像Swing的BuffereImage那样具有自动垃圾收集功能。 另外,我认为计算机要不断地从BuffereImage转换为Im