2012-04-15 4 views
2

私のJava swingアプリケーションには、JMenuItems とJButtonの両方で使用されるいくつかのAbstractActionがあります。 JButton内のJToolbarにいくつか入れたいですが、 アイコンだけを表示したいのですが、テキストは表示しません。これを行うにはベストプラクティスの方法がありますか? Abstract JToolbarのJButtonでのテキストなしの動作

+0

hmm ..ツールバーに追加されたアクションのデフォルトの動作ではありませんか? – kleopatra

答えて

10

最も簡単で、これは自動的にテキストを非表示になり、ツールバーに共有アクションを追加することです:

Action sharedAction = new AbstractAction("some text") { 
    .... 
} 
sharedAction.putValue(Action.SMALL_ICON, someIcon); 
myToolBar.add(sharedAction); 
myNormalButton.setAction(sharedAction); 

を手動でツールバーのボタンを作成したい何らかの理由で、あなたはそのhideActionTextを設定する必要がある場合ツールバーにボタンを追加する前に、真のプロパティ

JButton manual = new JButton(sharedAction); 
manual.setHideActionText(true); 
myToolBar.add(manual); 

更新

FO R inverse requirement, solved in another answerは、逆の操作を行い、そのは、プロパティをfalseに設定されます。

AbstractButton button = myToolBar.add(sharedAction); 
button.setHideActionText(false); 

のJButtonを作成し、追加を超える利点が代わりにすべての内部のリスナーにJToolBarのために適切に構成されたボタンを持つことです。

+2

「推奨」(http://docs.oracle.com/javase/6/docs/api/javax/swing/Action.html)アプローチである 'hideActionText()'の+1。 – trashgod

1

Action.NAMEnullに設定するか、またはStringを空にすることができます。

putValue(Action.NAME, null); 

補遺:ユーザーに便利なように、それはボタンのtoolTipTextなりますAction.SHORT_DESCRIPTIONの前の文字列を、置きます。

+0

ehhh ...いいえ(少なくとも私は質問を理解しています:プレーン・ボタンとテキスト・アイコンの両方をテキストとアイコンで共有しているテキストとアイコンの両方を持つアクションと後者のアイコンのみ) – kleopatra

+0

ああ、私は両方ともに同じアイコンとテキストではなく、どちらも同じ 'Action'を持っています。 – trashgod

1

私の場合、JToolBarにアクションを追加するだけでテキストが表示されないので、JButtonにアクションを入れていることを確認しました。

JToolBar tb = new JToolBar(); 
tb.add(new JButton(sharedAction)); 
+0

えええええええええええええええええええええええええええええええええ? – kleopatra

+0

まあ、混乱するかもしれないので、おそらく私はここに掲載してはいけません。私はAbstractActionにテキストとアイコンを追加する方法を見つけることができませんでしたが、AbstractActionをJButtonに追加すると、両方が表示されることに気づきました。そうでない場合、アイコンのみが表示されます。 – dalvarezmartinez1

関連する問題