Как создать Option Dialog Box Одно из самых сложных диалоговых окон, диалоговое окно опции, которая сочетает в себе черты всех других диалоговых окон (подтвердите диалоговое окно, диалоговое окно ввода и окно Сообщений). Он может быть создан с showOptionDialog(компонент, объект, строка, инт, инт, значок, объект[], Object) метод класса JOptionPane. Аргументы этого метода заключаются в следующем: Родительский […]
Рубрика: Java
Как использовать tooltip
В Swing имеется компонет tooltip служащий для выведения подсказок, который поддерживается синтаксисом HTML с помощью тега. Это может быть использовано для показа изображений во всплывающих подсказках. Например, со следующей планировкой:
1 2 3 4 5 |
src org mypackage ImageInTooltip.java tooltip.gif |
И сам исходный код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import javax.swing.JFrame; import javax.swing.JLabel; public class ImageInTooltip { public static void main(String[] args) { JFrame frame = new JFrame(); JLabel label = new JLabel("Label with image in Tooltip!"); label.setToolTipText( "<html><img src=\"" + ImageInTooltip.class.getResource("tooltip.gif") + "\"> Tooltip " ); label.setHorizontalAlignment(JLabel.CENTER); frame.setContentPane(label); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setBounds(100, 100, 200, 100); frame.setVisible(true); } } |
Как использовать swing boxlayout
boxlayout бывает двух видов: горизонтальная и вертикальная. Горизонтальное место расположения компонентов слева направо в сосуде и вертикальная планировка размещает компоненты сверху кнопку. В отличие от GridLayout, boxlayout позволяет компонентам занимать различное количество пространства. В этом примере кода показано, как использовать boxlayout в вертикального типа. Он организует четыре кнопки в вертикальную колонку.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
import java.awt.Component; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.WindowConstants; public class BoxLayoutExp extends JFrame { public BoxLayoutExp() { setTitle("Box Layout Example"); setSize(150, 150); getContentPane().setLayout( new BoxLayout(getContentPane(), BoxLayout.Y_AXIS)); JButton btn1 = new JButton("Button 1"); JButton btn2 = new JButton("Button 2"); JButton btn3 = new JButton("Button 3"); JButton btn4 = new JButton("Button 4"); getContentPane().add(btn1); getContentPane().add(btn2); btn1.setAlignmentX(Component.CENTER_ALIGNMENT); getContentPane().add(btn3); getContentPane().add(btn4); } public static void main(String[] args) { BoxLayoutExp ble = new BoxLayoutExp(); ble.setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE); ble.setVisible(true); } } |
Как получать информацию из всех доступных по умолчанию UIManager
Эта java подсказка иллюстрирует способ получения информации о всех доступных по умолчанию UIManager. Информационная утилита для отображает различные по умолчанию UIManager. Разработчики могут использовать это, для того чтобы узнать все интерфейсы доступны на их системе.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import javax.swing.*; public class UIManagerDefaults { public static void main(String[] args) { System.out.println("Default L&F:"); System.out.println(" " + UIManager.getLookAndFeel().getName()); UIManager.LookAndFeelInfo[] inst = UIManager.getInstalledLookAndFeels(); System.out.println("Installed L&Fs: "); for (int i=0;i<inst.length;i++) { System.out.println(" " + inst[i].getName()); } LookAndFeel[] aux = UIManager.getAuxiliaryLookAndFeels(); System.out.println("Auxiliary L&Fs: "); if (aux != null) { for (int i=0;i<aux.length;i++) { System.out.println(" " + aux[i].getName()); } } else {System.out.println(" <NONE>");} System.out.println("Cross-Platform:"); System.out.println(" " + UIManager.getCrossPlatformLookAndFeelClassName()); System.out.println("System:"); System.out.println(" " + UIManager.getSystemLookAndFeelClassName()); System.exit(0); } } |
Как реализовать диаграммы Chart
В java есть способ реализации в виде круговой диаграммы. График реализуется с помощью класса ChartPainter. Пользователь может использовать это в своих приложениях для отображения графического представления статистических данных. Пример ниже демонстрирует вам, его реализацию:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.plaf.*; public class PieChartPainter extends ChartPainter { protected static PieChartPainter chartUI = new PieChartPainter(); protected int originX, originY; protected int radius; private static double piby2 = Math.PI / 2.0; private static double twopi = Math.PI * 2.0; private static double d2r = Math.PI / 180.0; // Degrees to radians. private static int xGap = 5; private static int inset = 40; public int indexOfEntryAt(MouseEvent me) { int x = me.getX() - originX; int y = originY - me.getY(); // Upside-down coordinate system. // Является (x,y) в круг? if (Math.sqrt(x*x + y*y) > radius) { return -1; } double percent = Math.atan2(Math.abs(y), Math.abs(x)); if (x >= 0) { if (y <= 0) { // (IV) percent = (piby2 - percent) + 3 * piby2; // (IV) } } else { if (y >= 0) { // (II) percent = Math.PI - percent; } else { // (III) percent = Math.PI + percent; } } percent /= twopi; double t = 0.0; if (values != null) { for (int i = 0; i < values.length; i++) { if (t + values[i] > percent) { return i; } t += values[i]; } } return -1; } public void paint(Graphics g, JComponent c) { Dimension size = c.getSize(); originX = size.width / 2; originY = size.height / 2; int diameter = (originX < originY ? size.width - inset : size.height - inset); radius = (diameter / 2) + 1; int cornerX = (originX - (diameter / 2)); int cornerY = (originY - (diameter / 2)); int startAngle = 0; int arcAngle = 0; for (int i = 0; i < values.length; i++) { arcAngle = (int)(i < values.length - 1 ? Math.round(values[i] * 360) : 360 - startAngle); g.setColor(colors[i % colors.length]); g.fillArc(cornerX, cornerY, diameter, diameter, startAngle, arcAngle); drawLabel(g, labels[i], startAngle + (arcAngle / 2)); startAngle += arcAngle; } g.setColor(Color.black); g.drawOval(cornerX, cornerY, diameter, diameter); // Cap the circle. } public void drawLabel(Graphics g, String text, double angle) { g.setFont(textFont); g.setColor(textColor); double radians = angle * d2r; int x = (int) ((radius + xGap) * Math.cos(radians)); int y = (int) ((radius + xGap) * Math.sin(radians)); if (x < 0) { x -= SwingUtilities.computeStringWidth(g.getFontMetrics(), text); } if (y < 0) { y -= g.getFontMetrics().getHeight(); } g.drawString(text, x + originX, originY - y); } public static ComponentUI createUI(JComponent c) { return chartUI; } } |