Swing/_SandBox のバックアップ(No.8)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/_SandBox へ行く。
- 1 (2014-05-16 (金) 16:45:38)
- 2 (2014-07-13 (日) 08:50:46)
- 3 (2014-08-17 (日) 23:30:27)
- 4 (2014-08-20 (水) 14:45:54)
- 5 (2014-08-24 (日) 21:25:31)
- 6 (2014-08-25 (月) 15:25:34)
- 7 (2014-08-31 (日) 23:19:21)
- 8 (2014-09-14 (日) 22:17:53)
- 9 (2014-09-15 (月) 00:00:44)
- 10 (2014-09-15 (月) 20:50:51)
- 11 (2014-09-16 (火) 00:40:32)
- 12 (2014-09-20 (土) 00:16:45)
- 13 (2014-09-21 (日) 02:29:11)
- 14 (2014-09-21 (日) 17:06:36)
- 15 (2014-09-21 (日) 23:48:13)
- 16 (2014-09-23 (火) 18:55:40)
- 17 (2014-09-24 (水) 16:38:38)
- 18 (2014-09-28 (日) 19:20:51)
- 19 (2014-09-29 (月) 00:01:02)
- 20 (2014-09-29 (月) 03:28:21)
- 21 (2014-10-03 (金) 23:06:20)
- 22 (2014-10-05 (日) 10:18:20)
- 23 (2014-10-05 (日) 15:32:20)
- 24 (2014-10-05 (日) 17:12:07)
- 25 (2014-10-06 (月) 00:00:55)
- 26 (2014-10-06 (月) 20:55:14)
- 27 (2014-10-09 (木) 19:56:30)
- 28 (2014-10-14 (火) 20:46:13)
- 29 (2014-10-15 (水) 01:49:13)
- 30 (2014-10-16 (木) 20:53:50)
- 31 (2014-10-16 (木) 22:00:48)
- 32 (2014-10-20 (月) 06:29:35)
- 33 (2014-10-27 (月) 00:00:24)
- 34 (2014-11-01 (土) 00:46:09)
- 35 (2014-11-08 (土) 01:41:12)
- 36 (2014-11-25 (火) 03:03:31)
- 37 (2014-11-28 (金) 20:27:21)
- 38 (2014-11-29 (土) 21:31:57)
- 39 (2014-12-01 (月) 00:13:01)
- 40 (2014-12-12 (金) 15:14:25)
- 41 (2015-01-06 (火) 15:16:11)
- 42 (2015-01-07 (水) 21:09:19)
- 43 (2015-01-26 (月) 12:41:59)
- 44 (2015-02-03 (火) 19:33:06)
- 45 (2015-02-09 (月) 00:10:17)
- 46 (2015-03-04 (水) 18:53:15)
- 47 (2015-03-08 (日) 21:25:43)
- 48 (2015-03-11 (水) 18:31:25)
- 49 (2015-03-22 (日) 23:03:35)
- 50 (2015-03-29 (日) 18:58:00)
- 51 (2015-03-30 (月) 00:03:38)
- 52 (2015-05-07 (木) 22:08:19)
- 53 (2015-05-28 (木) 21:20:29)
- 54 (2015-06-01 (月) 00:25:32)
- 55 (2015-06-07 (日) 17:14:32)
- 56 (2015-06-08 (月) 00:03:30)
- 57 (2015-06-09 (火) 19:41:54)
- 58 (2015-06-12 (金) 15:52:05)
- 59 (2015-06-13 (土) 14:01:40)
- 60 (2015-06-14 (日) 23:59:44)
- 61 (2015-06-29 (月) 05:01:12)
- 62 (2015-06-30 (火) 18:26:16)
- 63 (2015-07-03 (金) 14:39:33)
- 64 (2015-07-06 (月) 02:03:05)
- 65 (2015-07-06 (月) 15:18:14)
- 66 (2015-07-10 (金) 17:45:32)
- 67 (2015-07-11 (土) 03:44:35)
- 68 (2015-07-13 (月) 02:34:04)
- 69 (2015-07-20 (月) 03:20:45)
- 70 (2015-08-03 (月) 02:55:10)
- 71 (2015-08-17 (月) 01:08:50)
- 72 (2015-10-05 (月) 00:12:28)
- 73 (2015-10-06 (火) 17:00:53)
- 74 (2015-10-12 (月) 05:29:41)
- 75 (2016-03-29 (火) 12:57:09)
- 76 (2016-03-30 (水) 15:52:31)
- 77 (2016-03-31 (木) 14:12:28)
- 78 (2016-03-31 (木) 18:13:10)
- 79 (2016-04-07 (木) 15:01:59)
- 80 (2016-04-08 (金) 15:20:50)
- 81 (2016-04-11 (月) 12:31:17)
- 82 (2016-04-11 (月) 14:05:47)
- 83 (2016-04-25 (月) 18:53:25)
- 84 (2016-05-18 (水) 19:58:53)
- 85 (2016-06-03 (金) 13:38:40)
- 86 (2016-06-07 (火) 17:29:43)
- 87 (2016-06-24 (金) 15:14:34)
- 88 (2016-09-12 (月) 01:21:33)
- 89 (2016-09-25 (日) 20:33:55)
- 90 (2016-09-26 (月) 15:23:44)
- 91 (2016-09-28 (水) 16:57:57)
- 92 (2017-02-01 (水) 19:07:25)
- 93 (2017-02-03 (金) 16:31:15)
- 94 (2017-02-06 (月) 14:21:53)
- 95 (2017-02-06 (月) 16:14:44)
- 96 (2017-02-09 (木) 17:53:06)
- 97 (2017-03-24 (金) 18:22:57)
- 98 (2017-04-04 (火) 14:13:45)
- 99 (2017-04-07 (金) 13:51:51)
- 100 (2017-04-12 (水) 18:50:51)
- 101 (2017-04-24 (月) 14:36:31)
- 102 (2017-05-29 (月) 15:39:15)
- 103 (2017-06-05 (月) 13:57:54)
- 104 (2017-06-07 (水) 15:35:06)
- 105 (2017-07-05 (水) 20:11:10)
- 106 (2017-07-07 (金) 17:01:03)
- 107 (2017-07-12 (水) 19:03:10)
- 108 (2017-08-03 (木) 16:17:03)
- 109 (2017-08-07 (月) 16:00:50)
- 110 (2017-10-02 (月) 13:49:13)
- 111 (2017-10-27 (金) 16:26:13)
- 112 (2017-11-02 (木) 15:34:40)
- 113 (2017-11-21 (火) 19:19:21)
- 114 (2017-12-11 (月) 16:29:32)
- 115 (2017-12-11 (月) 18:06:42)
- 116 (2017-12-18 (月) 14:48:47)
- 117 (2018-01-08 (月) 21:15:51)
- 118 (2018-01-15 (月) 14:44:37)
- 119 (2018-01-22 (月) 16:10:11)
- 120 (2018-01-22 (月) 18:19:57)
- 121 (2018-02-27 (火) 14:35:27)
- 122 (2018-04-02 (月) 18:59:23)
- 123 (2018-06-18 (月) 16:29:32)
- 124 (2018-07-30 (月) 16:03:21)
- 125 (2018-08-02 (木) 16:00:29)
- 126 (2018-08-02 (木) 21:25:02)
- 127 (2019-03-04 (月) 22:20:31)
- 128 (2019-03-05 (火) 18:50:53)
- 129 (2019-03-08 (金) 15:39:01)
- 130 (2019-03-11 (月) 15:20:26)
- 131 (2019-03-18 (月) 19:31:43)
- 132 (2019-03-29 (金) 16:33:32)
- 133 (2019-04-01 (月) 15:14:20)
- 134 (2019-09-09 (月) 15:53:47)
- 135 (2019-10-07 (月) 21:37:43)
- 136 (2019-10-17 (木) 20:46:06)
- 137 (2019-11-01 (金) 17:04:13)
- 138 (2019-11-11 (月) 15:09:11)
- 139 (2019-11-29 (金) 15:35:17)
- 140 (2019-12-02 (月) 14:51:31)
- 141 (2020-02-03 (月) 18:52:30)
- 142 (2020-06-14 (日) 15:14:28)
- 143 (2020-06-15 (月) 03:23:01)
- 144 (2020-08-09 (日) 16:03:42)
- 145 (2020-12-23 (水) 13:05:07)
- 146 (2021-01-04 (月) 20:32:52)
- 147 (2021-01-18 (月) 01:10:44)
- 148 (2021-01-25 (月) 04:44:53)
- 149 (2021-02-01 (月) 01:38:48)
- 150 (2021-04-26 (月) 19:49:35)
- 151 (2021-07-07 (水) 21:15:57)
- 152 (2021-07-10 (土) 01:36:49)
- 153 (2021-07-10 (土) 03:26:25)
- 154 (2021-07-17 (土) 23:21:07)
- 155 (2021-07-18 (日) 02:02:13)
- 156 (2021-07-18 (日) 22:15:11)
- 157 (2021-07-19 (月) 02:46:39)
- 158 (2021-08-21 (土) 15:36:27)
- 159 (2021-11-01 (月) 01:09:24)
- 160 (2021-12-06 (月) 00:42:13)
- 161 (2022-08-05 (金) 15:59:15)
- 162 (2022-08-20 (土) 22:15:25)
- 163 (2022-09-26 (月) 01:40:57)
- 164 (2022-10-02 (日) 02:59:47)
- 165 (2022-10-11 (火) 12:55:56)
- 166 (2023-01-02 (月) 03:21:26)
- 167 (2023-01-17 (火) 17:00:11)
- 168 (2023-02-19 (日) 20:11:58)
- 169 (2024-08-05 (月) 14:22:36)
TITLE:来週のネタとか(゚ε゚)
概要
Swing関係の自分用のメモとかネタ帳みたいなものです。
移動: ネタのリクエスト、Swingのサンプルに関するメモ
- 以前ここで頂いたコメントは、Comments/Swingに移動しました。
Swing
のサンプルに関するメモは、Swingのサンプルに関するメモ - てんぷらメモ@はてなに移動しました。
Swing調整中のネタ一覧
調整中
以下テスト中なので、Exception
が発生したり、まともに動作しなくても(゚ε゚)キニシナイ!!
- Swing/CubeEffect?
- Animatingcardlayout — Project Kenai
- (JavaScript) Animation.Cube - Rotating Cube Animation Effect
- http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=36768&forum=12&7
- jogl-demos:
- プログラマメモ2: Image Processing 台形変形への道 - へたれなので。
- Open source Java projects: AnimatingCardLayout - JavaWorld
- animatingcardlayout: ホーム
- Swing/DropOnTabTitle
- Swing/DefaultLookAndFeelDecorated?
- Swing/NoArrowButtonCellEditor?
- Swing/UninstallListeners
- Swing/ScrollPaneCorner?
java - swing gui flickering white error - Stack Overflowのサンプルを試していたら面白い挙動に遭遇。
JDK1.7.0_21
- IllegalArgumentException: Comparison method violates its general contract!
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Comparison method violates its general contract! at java.util.TimSort.mergeLo(TimSort.java:747) at java.util.TimSort.mergeAt(TimSort.java:483) at java.util.TimSort.mergeCollapse(TimSort.java:410) at java.util.TimSort.sort(TimSort.java:214) at java.util.TimSort.sort(TimSort.java:173) at java.util.Arrays.sort(Arrays.java:659) at java.util.Collections.sort(Collections.java:217)
- フレームのリサイズで上下左右に余白?
- IllegalArgumentException: Comparison method violates its general contract!
JDK1.6.0_41
- フレームのリサイズで右と下に余白?
import java.awt.*;
import javax.swing.*;
public class Gui {
public JComponent makeUI() {
JPanel p = new JPanel(new GridLayout(22,12,10,10));
p.setBackground(Color.WHITE);
p.setBorder(BorderFactory.createLineBorder(Color.BLUE, 10));
for (int i = 0; i < 22; i++) {
for (int j = 0; j < 12; j++) {
JLabel label = new JLabel();
label.setBorder(BorderFactory.createLineBorder(Color.RED));
label.setBackground(Color.GRAY);
label.setOpaque(true);
//label.setPreferredSize(new Dimension(50, 50));
p.add(label);
}
}
return p;
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
@Override public void run() {
createAndShowGUI();
}
});
}
public static void createAndShowGUI() {
JFrame f = new JFrame();
f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
f.getContentPane().add(new Gui().makeUI());
f.setSize(320, 240);
//f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
}
JMenuBar
を検索してJRadioButtonMenuItem
に、ActionListener
を追加
Arrays.stream(menuBar.getSubElements())
.flatMap(new Function<MenuElement, Stream<MenuElement>> () {
@Override public Stream<MenuElement> apply(MenuElement me) {
MenuElement[] sub = me.getSubElements();
if (sub.length != 0) {
return Arrays.stream(sub).flatMap(sme -> apply(sme));
} else {
return Stream.of(me);
}
}
})
.filter(mi -> mi instanceof JRadioButtonMenuItem)
.forEach(mi -> ((JRadioButtonMenuItem) mi).addActionListener(al));
検討中で未実装
こっそり消えても(゚ε゚)キニシナイ!!
- Swing/FileChooserWithOptionPane?
- %JAVA_HOME%\demo\jfc\FileChooserDemo\src\FileChooserDemo.java
- %JAVA_HOME%\demo\jfc\SwingSet2\src\FileChooserDemo.java
- Swing/ClearComboBoxSelection?
- Swing/SecondaryLoop
メモ
- JTree Table
- JPopupMenu BlankIcon
- UIDefaults ProxyLazyValue
- JTable setSurrendersFocusOnKeystroke
- File createTempFile
- JTable Vertical Table Header
- File getTotalSpace, getFreeSpace, getUsableSpace
- JTabbedPane tab height animation
- Formatter and password char
- Cells with rouded corners in JTable
- Tearaway tabs
- Multi selection JComboBox
- JSplitPane hide unhide tab
- JScrollBar BlockIncrement
- JScrollPane MapView subview
- JDesktopPane JInternalFrame Tab Loop
- JTabbedPane ScrollButton Layout
- JTabbedPane Transparency
- JTextField(search) in JButton(Tab, ButtonBar)
- switch JInternalFrame to JTabbedPane
- JTree JList(1.8.0) Nimbus Selection Rect
- Highlighter#removeAllHighlights()
- http://docs.oracle.com/javase/jp/7/api/javax/swing/text/html/HTMLDocument.html#getIterator(javax.swing.text.html.HTML.Tag)
Swing 修正予定・検討メモ
実際にやるかどうかは未定ですが、今後Swing Tips
を改良したいと思っていることをメモしています(順不同)。
Swing Tips
のみ分離して、Markdown
、静的サイト生成に移行できないか検討中- http://terai.xrea.jp/index.html で、
Jekyll Bootstrap
、DISQUS
のテスト中 Jekyll
、タグ付けinline
の<code>
タグJDK 1.6.0_10
などのアンダーラインnew JPanel()
などの翻訳拒否- 人名?
- http://terai.xrea.jp/index.html で、
- https://sites.google.com/site/javaswingtips/ は、
500
ページ近く手動でアップロードすることになりそうなので無理かも
- ソースコード
Wiki
中のサンプルコードでクラスなどをjavadoc
に自動リンク- 日本語、文字コード
- 簡単にコンパイル、実行
- Ant(build.xml)、バッチファイル、シェルスクリプトの改良
- build.xml の整理
- NetBeans (Eclipse) .classpath、.projectの追加
- src.zipのファイル名を、それぞれ適当なものに変更?
- Ant(build.xml)、バッチファイル、シェルスクリプトの改良
- 各Tipsの難易度表示
- こちらで適当に評価するか、ユーザに評価してもらうか…
- レーティングバー
- Web Start
- 「プログラムの追加と削除」に登録されない方法を探す
- キャッシュを無効にする
- UI操作無しで全部削除できる方法を探す
- javaws -uninstall
- 起動時にスプラッシュスクリーンを表示しない方法を探す
- javaws -Xnosplash <jnlp>
- 「プログラムの追加と削除」に登録されない方法を探す
- バージョンの表記
- JDK 6 と JDK 1.6 どちらかに揃える
変更済み
- ライセンス
- google code においたソースコードは、MIT License
- What license should I use for code snippets released on my blog? - Stack Overflow
- http://hobbylinux.info/download/rtl8181/src/GPL/wireless_tools.25-broken!!!/sample_pm.c
- This particular snipset of code is available under the Apache license, BSD license, CC0, ..., WTFPL (at your choice).
- スクリーンショット
screenshot一覧ページの分割- スクリーンショットはすべて Picasa に移動
- 一覧は https://picasaweb.google.com/112210866074949770793/JavaSwingTips02?authuser=0&feat=directlink
- スパム対策
英数のみのコメント禁止別の対策を導入再度英数のみのコメント禁止
ソースコード、FindBugs, PMDリポジトリ(Subversion)を公開(JavaForge、sourceforge.jpとか調べる)- http://code.google.com/p/java-swing-tips/source/checkout
もしくは全ソースコードの一括ダウンロードを簡単に(wgetなどの対策)Mercurial にするかも
ソースコード、Ubuntuなどでも実行できるようにe.isPopupTrigger()を使ってJPopupMenuを表示している箇所(JDK 5 以前のソース)を、すべてsetComponentPopupMenuに変更する。
ソースコード、1.5以上対応に変更Color クラスにおける定数の大文字化ソースコード、codeプラグインで色分けソースコード、build.xmlなどをすべてUTF-8化バッチファイルの代わりにantのタスクを使うように変更- antのbuild.xmlにrunタスクを追加、ただしバッチファイルも残すことに
sampleをexampleに統一Swing/JarFile?をAntの下に移動する分類: JTree JButtonTableSorter.javaをJDK6のTableRwoSorterに置き換えるソートする意味のないサンプルで使用しているTableSorter.javaは削除
スクリーンショットすべて撮り直す(prefixのコロン:)screenshot一覧ページの分割、画像サイズ削減キャッシュ一覧で探しやすいように、タイトルの頭に「サ:」(サンプル)を付けていたのを、「JST 」(Java Swing Tips)に変更日本標準時ではない…
分類JTableのTipsを分割- ソースを一つにまとめる(ワンクリックで全ソースコードを表示したい)ためにTestModel.javaを検索してpackageプライベートなクラスに変更中
>find . -type f -name TestModel.java -ls | gawk "{print $7, $11}" | sort
- Look&Feel関係でpublic クラスでないとダメなのは…、放置。
リンクメモ(自分用)
- #JDK-8039464 The scrollbar in JScrollPane has no right border if used WindowsLookAndFeel - Java Bug System
- Core Java Technologies Tech Tips
- Styling Digital Images with ConvolveOp and Using HttpURLConnection to Access Web Pages Tech Tips
- Online Training and Tutorials
- Java Technology Fundamentals Newsletter
- Chapter 6 Continued: Advanced Printing
- Short Course
- Learning Java 2D, Part 1
- Creating Wizard Dialogs with Java Swing
- Using JConsole to Monitor Applications
- VolatileBufferedToolkitImage Strategies
- Intermediate Images
- Java 2D: New Printing Package
- Deploying Software with JNLP and Java Web Start
- Java look and feel Graphics Repository
- Java 2D API Sample Programs
Bugリンクメモ(自分用)
- Bug ID: 6723524 Invalid background of components displayed in JTable in Nimbus L&F
- Release Fixed: 1.7.0
Bug ID: 6910490 MatteBorder JScrollpane interaction - Bug ID: 6612928 Win32ShellFolder2 throws RejectedExecutionException on application exit
- Bug ID: 4280944 Attributes on last newline character cause undesirable extra spacing.
- Bug ID: 6780505 java.awt.Desktop.getDesktop().open() fails on shared files with white spaces
- Bug ID: 4777210 setText causes deadlock in JFormattedTextField, JTextComponent
- Bug ID: 6937538 Nimbus: JInternalFrame() causes exception if user UI installed
- Release Fixed: 1.4.0
Bug ID: 4463424 LineBreakMeasurer inconsistent with TextLayout - Bug ID: 6700748 Cursor flickering during D&D when using CellRendererPane with validation
- Bug ID: 6723524 Invalid background of components displayed in JTable in Nimbus L&F
- Bug ID: 4292511 JTableHeader height determined by first column given HTML text
- Bug ID: 6826514 SwingWorker: done() called before doInBackground() returns, when cancelled
- Bug ID: 6413228 Many links broken with "?is-external=true".
- Bug ID: 4908277 Animated GIF does not play inside JTable, customized TableCellRenderer
- Release Fixed: 1.7.0, 1.6.0_18
Bug ID: 4833524 BasicTreeUI.isToggleSelectionEvent() does not properly handle popup triggers - Release Fixed: 1.7.0, 1.6.0_18
Bug ID: 6840086 JFileChooser lacks icons on top right when running on Windows 7 - Bug ID: 4765261 JTextArea.append does not follow spec (it is not ThreadSafe)
- Bug ID: 4760477 JTextArea.append(String) is not ThreadSafe
- Release Fixed: 1.7.0
Bug ID: 4765383 JTextArea.append(String) not thread safe - Bug ID: 7140863 Lots of Japanese OpenType fonts do not render correctly
- Bug ID: JDK-5036549 PopupMenu not adjusting its location correctly depending on taskbar's position.
メモ: 痒いところに手が届かないJavaのコード
初期化時にデッドロックの可能性があるからということで、それはいいとして。 代わりに使うのが Logger.getLogger(Logger.GLOBAL_LOGGER_NAME) だなんて、どうにかしてほしい。 Logger.getGlobal() を用意してくれればいいのに。なに考えてんだろう?EoDじゃなかったの? Javaのコード書きにくさって、静的動的よりも、こういう痒いところに手が届かないことの積み重ねが大きいと思う。
Swing関係
- 表の全行を削除するメソッド
- 表の全行を削除する場合、
DefaultTableModel#setRowCount(0);
ではなく、もっと分かりやすいメソッドが欲しい。 - 例えば
DefaultComboBoxModel#removeAllElements()
、DefaultListModel#clear()
のような(これはこれでどれかひとつに統一して欲しい…)。
- 表の全行を削除する場合、
- フレームを画面中央に表示するメソッド
- フレームを画面中央に表示する場合、
Window#setLocationRelativeTo(null);
ではなく、もっと分かりやすいメソッドが欲しい。 JavaFX Script
では、centerOnScreen: true
が用意されていたが…。
- フレームを画面中央に表示する場合、