Få raka rader/kolumner i jFrame

Permalänk

Få raka rader/kolumner i jFrame

Har problem med ett litet jFrame program som ska visa statistik. Jag förstår inte hur jag ska göra för att få raderna och kolumnerna att hålla samma avstånd till varandra. Någon som kan hjälpa mig med detta. Nu har jag bara tabbat mig fram till detta resultat, men vill att det ska se snyggare ut.

import java.text.NumberFormat; public class Uppgift5 extends javax.swing.JFrame { public Uppgift5() { initComponents(); } @SuppressWarnings("unchecked") private void initComponents() { jScrollPane1 = new javax.swing.JScrollPane(); jTextArea1 = new javax.swing.JTextArea(); jButton1 = new javax.swing.JButton(); setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); setTitle("Uppgift 5"); jTextArea1.setColumns(20); jTextArea1.setRows(5); jScrollPane1.setViewportView(jTextArea1); jButton1.setText("Skriv ut"); jButton1.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButton1ActionPerformed(evt); } }); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); getContentPane().setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 403, Short.MAX_VALUE) .addComponent(jButton1)) .addContainerGap()) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() .addContainerGap() .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 573, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(jButton1) .addContainerGap(24, Short.MAX_VALUE)) ); pack(); }// </editor-fold> private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { NumberFormat nf = NumberFormat.getNumberInstance(); nf.setMaximumFractionDigits(2); jTextArea1.setText(null); int dag = 01; double lön = 0.01, total = 0; jTextArea1.append("Dag: Lön: Innehav:\n"); while ( dag < 30 ) { jTextArea1.append(String.valueOf(dag) + " " + nf.format(lön) + " " + nf.format(total) + "\n" ); lön *= 2; total += lön; dag++; if ( lön > 2000000) break; } } public static void main(String args[]) { try { for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { if ("Nimbus".equals(info.getName())) { javax.swing.UIManager.setLookAndFeel(info.getClassName()); break; } } } catch (ClassNotFoundException ex) { java.util.logging.Logger.getLogger(Uppgift5.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (InstantiationException ex) { java.util.logging.Logger.getLogger(Uppgift5.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (IllegalAccessException ex) { java.util.logging.Logger.getLogger(Uppgift5.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } catch (javax.swing.UnsupportedLookAndFeelException ex) { java.util.logging.Logger.getLogger(Uppgift5.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); } //</editor-fold> /* Create and display the form */ java.awt.EventQueue.invokeLater(new Runnable() { public void run() { new Uppgift5().setVisible(true); } }); } // Variables declaration - do not modify private javax.swing.JButton jButton1; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JTextArea jTextArea1; // End of variables declaration }

Permalänk
Medlem

Jag ser då inga tabbar? Tabbar skrivs \t

Visa signatur

Den här texten är helt j*vla onödig, men den ska vara här helt enkelt.
The Sleeper: Intel Core i7 930+Noctua NH-C12P SE14, Gigabyte GA-X58A-UD3R, XFX HD6970, Corsair 6GB 1600MHz, be quiet! Dark Power Pro P8 750W, WD Black 640GB, Lian Li PC-A77F
MacBook Pro 4,1 17" iMac 12,2 27" Retina MacBook Pro 12,1 13"
CITERA VID SVAR PÅ MINA INLÄGG SÅ ATT JAG FÅR EN NOTIS!

Permalänk

Jag har tabbarna innanför " "

jTextArea1.append(String.valueOf(dag) + " " + nf.format(lön) + " " + nf.format(total) + "\n" );

Även om jag ändra detta till \t så ändras ju inte hur texten skrivs ut när lön och totala lönen ändras när loopen körs.

Permalänk
Medlem
Skrivet av friflygare:

Jag har tabbarna innanför " "

jTextArea1.append(String.valueOf(dag) + " " + nf.format(lön) + " " + nf.format(total) + "\n" );

Även om jag ändra detta till \t så ändras ju inte hur texten skrivs ut när lön och totala lönen ändras när loopen körs.

Jaha, ok. Jag har isf inte tillräckligt med erfarenhet av java för att komma på någon bättre idé än att lägga till en if-sats som minskar antalet tabbar om antalet tecken i strängen som ska skrivas ut överskrider något passande gränsvärde.

Visa signatur

Den här texten är helt j*vla onödig, men den ska vara här helt enkelt.
The Sleeper: Intel Core i7 930+Noctua NH-C12P SE14, Gigabyte GA-X58A-UD3R, XFX HD6970, Corsair 6GB 1600MHz, be quiet! Dark Power Pro P8 750W, WD Black 640GB, Lian Li PC-A77F
MacBook Pro 4,1 17" iMac 12,2 27" Retina MacBook Pro 12,1 13"
CITERA VID SVAR PÅ MINA INLÄGG SÅ ATT JAG FÅR EN NOTIS!

Permalänk
Medlem

Om du vill lösa problemet snabbt utan att använda JTable så hade jag kört med en JTextPane. Den har stöd för html och då kan du skriva en html-tabell för att få lite finare presentation.

En annan lösning är att köra med en monospace-font och räkna whitespace mellan "kolumnerna".

Tabulär data är ganska dumt att presentera utan en tabell.

Visa signatur

ηλί, ηλί, λαμά σαβαχθανί!?

Permalänk
Skrivet av Leedow:

Om du vill lösa problemet snabbt utan att använda JTable så hade jag kört med en JTextPane. Den har stöd för html och då kan du skriva en html-tabell för att få lite finare presentation.

En annan lösning är att köra med en monospace-font och räkna whitespace mellan "kolumnerna".

Tabulär data är ganska dumt att presentera utan en tabell.

Tack för tipsen, håller på och kollar igenom och se vad som passa mig och uppgiften bäst!

Permalänk

Snyggade till det med ordentliga tabs \t som du skrev och det blev mycket bättre. Fixade lite annat smått och nu funkar den riktigt bra. Tack för hjälpen.