我正在尝试SwingWorker在我的应用程序中实现一个类.有没有办法设置一段时间,之后,SwingWorker"超时"?我在想,可能会抛出一个OutOfTime我可以抓住然后处理的异常.我只是不确定如何实现它.
感谢你的帮助!
有没有人知道如何在使用Nimbus LookAndFeel时更改JProgressBar的颜色?
我能够使JFrame完全透明,JButton部分透明,直到我在按钮上移动鼠标(不要单击)并从按钮移开鼠标(通过MouseListener调用MouseExited).会发生什么是JButton的背景再次被绘制,所以在按钮上打开和关闭几个鼠标后,按钮完全不透明.
public class ButtonExample extends JWindow
{
public ButtonExample( )
{
JButton But = new JButton( "Testing" );
But.setBackground( new Color( 0, 0, 0, 200 ) );
But.setForeground( new Color( 70, 155, 255 ) );
this.add( But );
this.setBackground( new Color( 0, 0, 0, 0 ) );
this.setMinimumSize( new Dimension( 200,100 ) );
this.setVisible( true );
}
public static void main( String[ ] Args )
{
new ButtonExample( );
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个基于OSGi的桌面应用程序.我有一个Swing JFrame,我想添加添加模块(其他包)的可能性.我在JSig教程中浏览了EclipseZone OSGi,但每个应用程序都是从OSGi Framework(在本例中为Knopflerfish OSGi Desktop)启动的.
所以我的问题是,是否有一个选项可以在没有可见的OSGi框架的情况下启动应用程序?我知道,从代码中,可以更改bundle的属性,但是如何以这种方式更改框架的属性?(例如,默认捆绑存储位置,捆绑在位置时的默认操作等?)
public class MainFrame extends ServiceTracker implements BundleActivator {
public MainFrame(BundleContext context, JToolBar toolBar) {
// select, which services is the bundle tracking
super(context, JMenu.class.getName(), null);
}
@Override
public void start(BundleContext context) throws Exception {
//display a JFrame
}
@Override
public void stop(BundleContext context) throws Exception {
//hide a JFrame
}
@Override
public Object addingService(ServiceReference reference) {
// Process a Service and return a JMenu
return new JMenu();
}
@Override …Run Code Online (Sandbox Code Playgroud) 我正在构建一个小JTable,并且当选择一个单元格以便更容易地找到该单元格的关联名称时,我想突出显示列标题(和行标题 - 行标题部分实际上正在工作).这是一张图片:

我已经尝试使用以下方法切换标题的渲染器:
table.getTableHeader().setDefaultRenderer(new ColumnHeaderRenderer());
Run Code Online (Sandbox Code Playgroud)
但是只有当我点击标题并且总是说isSelected为false时才会调用它.
这是我用于行名的代码,包括渲染器内的高亮 - 代码不是由我,我只是修改了一下:
/*
* Use a JTable as a renderer for row numbers of a given main table.
* This table must be added to the row header of the scrollpane that
* contains the main table.
*/
public class RowNameTable extends JTable
implements ChangeListener, PropertyChangeListener {
private JTable main;
public RowNameTable(JTable table) {
main = table;
main.addPropertyChangeListener(this);
setFocusable(false);
setAutoCreateColumnsFromModel(false);
setModel(main.getModel());
setSelectionModel(main.getSelectionModel());
TableColumn column = new TableColumn();
column.setHeaderValue(" ");
addColumn(column);
column.setCellRenderer(new RowNameRenderer(main)); …Run Code Online (Sandbox Code Playgroud) 可以使用哪个侦听器来响应JTable单元格值更改的事件?我尝试使用TableModelListener但是我得到了一些错误,或者这个监听器没有对更改单元格的内容做出反应.
我需要采取行动改变细胞内容或细胞失去焦点.做这个的最好方式是什么?谢谢.
我想创建JTextField,其输入字符仅限于"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVXYWZZ0123456789 +# /%?= ~_- |!:,.;" 所以我试着压倒一切
public class CustomJTextField extends JTextField {
String goodchars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVXYWZZ0123456789+&@#/%?=~_-|!:,.;";
//... my class body ...//
@Override
public void processKeyEvent(KeyEvent ev) {
if(c != '\b' && goodchars.indexOf(c) == -1 ) {
ev.consume();
return;
}
else
super.processKeyEvent(ev);}}
Run Code Online (Sandbox Code Playgroud)
但它不是我想要的,因为用户不能再按ctrl-c ctrl -v ctrl-x ...所以我加入了
&& ev.getKeyCode() != 17 && ev.getKeyCode() !=67 && ev.getKeyCode() != 86 && ev.getKeyCode() !=0 &&
Run Code Online (Sandbox Code Playgroud)
到if条件,但现在用户可以粘贴不适当的输入,即'('或'<',没有任何问题......我该怎么办?
在我们的应用程序中,JTabbedPane具有无限制的选项卡,当选项卡的宽度超过选项卡式窗格的宽度时,选项卡将开始包装成多行.然后,当您单击其中一个上面的行中的选项卡时,整行将向下并到达前景.对于在多个选项卡之间进行点击的用户,由于无法跟踪选项卡顺序,因此非常容易混淆.
我怎么能 - 将标签固定到固定位置,同时将它们的内容放到前面(虽然这会损坏标签隐喻,但我不在乎),或者 - 将行数限制为一个(因此标签变得很好)狭窄而不是包装)?
我正在使用Netbeans IDE.我想以JTextfield这样的方式给出提示文本:当用户输入文本时,JTextField它被清除并接受用户输入.
这是事情:
public class ParentPanel extends JPanel{
private ChildPanel childPanel;
public ParentPanel() {
super();
initComponents();
}
public void pushData(int data){
childPanel.pushData(data);
}
private void initComponents() {
childPanel= new ChildPanel();
}
Run Code Online (Sandbox Code Playgroud)
我有另一个班:
public class ChildPanel extends JPanel{
public ChildPanel(){
super();
}
public void paintComponent(Graphics g){
//I draw some lines in this JPanel according to data
}
public void pushData(int data){
repaint();
}
}
Run Code Online (Sandbox Code Playgroud)
我想要的是pushData()在调用ChildPanel中的方法时绘制一些行.但现在ChildPanel内部没有响应.我该怎么办?
swing ×10
java ×9
jtable ×2
jtextfield ×2
colors ×1
highlight ×1
jbutton ×1
jframe ×1
jpanel ×1
jprogressbar ×1
jtabbedpane ×1
jtableheader ×1
keyevent ×1
listener ×1
netbeans ×1
nimbus ×1
osgi ×1
swingworker ×1
tabs ×1
timeout ×1
transparency ×1
validation ×1